2011-12-16 11 views
0

私はコードの行を持っていると仮定すると私がそれを理解すると、それをグローバルにするウィンドウへのイベント。ただし、Firefoxではイベントを関数に渡す必要があります。ノー成功でこれを試してみた:jQueryの.on()構文とevent.preventDefault()

$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event); 

function toggleComparisonPanel(event) { 
    event.preventDefault(); 
    $(this).addClass('active').siblings().removeClass('active'); 
    $quickSpecsTable.toggleClass('comparison-mode');  
    $filters.toggle(); 
} 

はこのようなものでも可能です、または.on()関数内で匿名関数にコードを入れて、私の唯一のオプションは、次のコードのようなものはありますか?

$comparePanel.on('click', '.pills li:not(.active)', function(event){ 
    event.preventDefault(); 
    $(this).addClass('active').siblings().removeClass('active'); 
    $quickSpecsTable.toggleClass('comparison-mode');  
    $filters.toggle(); 
}); 

可能であれば、私のイベントハンドラと関数を別々に保つことをお勧めします。

// declare event here, since you're using it here  
function toggleComparisonPanel(event) { 
    event.preventDefault(); 
    $(this).addClass('active').siblings().removeClass('active'); 
    $quickSpecsTable.toggleClass('comparison-mode');  
    $filters.toggle(); 
} 


//             just pass the function here 
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel); 

答えて

3

あなたは、単にこのように、どこか別の関数を宣言することができ、他のおそらくない多くの理由は、それは正直に言うと私に整然と感じよりも、それを行うのはいいことです明白な構文エラー(欠落した ")")があります。

$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event)); 

にそれを固定する(この時点で目に見える何event変数がありませんと仮定して)toggleComparisonPanel(undefined)の結果を取り付けることになります。

あなたはそれ

$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel); 

function toggleComparisonPanel(event) { 
... 
} 
+0

甘い作りたいです!それがそれでした。どうもありがとう :) –

2
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event);