2012-05-10 77 views
0

我認爲你可以使用bind()函數顯然綁定不同的事件。但是我有麻煩理解語法,特別是當有像keydown這樣的具體函數需要參數時。這裏是我的代碼示例:觸發相同功能的多個事件(特定情況)

  $('#closePopup').click(function(){ 
       popupbg.add(popup).fadeOut(); 
      }); 
      $(document).keydown(function(e){ 
       if(e.keyCode==27){ 
        popupbg.add(popup).fadeOut(); 
       } 
      }); 

是否有綁定的方式/這些觸發器2,所以我能避免重複popupbg.add(彈出).fadeOut();聲明?贊(上點擊按鍵(E))這樣做

+1

在jQuery的1.7,.on()方法是將事件處理程序附加到文檔的首選方法。 – j08691

+0

那麼問題是什麼? – VisioN

回答

1

不幸的是,您不能在一個語句中將不同的事件綁定到不同的對象。

你可以把這些代碼在一個函數,調用該函數在這兩個事件,以避免重複代碼:

function closePopupbg(){ 
    popupbg.add(popup).fadeOut(); 
} 

$('#closePopup').click(closePopupbg); 
$(document).keydown(function(e){ 
    if(e.keyCode==27){ 
     closePopupbg(); 
    } 
}); 
0

像你想在一個函數定義popupbg.add(popup).fadeOut();,然後從然而,許多事件調用它在我看來,你定義:

var someFunctionName = function(){ 
     popupbg.add(popup).fadeOut(); 
    }; 

    $('#closePopup').click(function(){ 
     someFunctionName(); 
    }); 
    $(document).keydown(function(e){ 
     if(e.keyCode==27){ 
      someFunctionName(); 
     } 
    }); 

*編輯** 我沒有以任何方式測試此代碼,僅用於演示目的,請不要在準確性,範圍或任何類似問題上給我打電話:)。

+0

嗯,不完全是,我想要多個觸發器指向單個功能,但顯然這是不可實現的 – Malyo

+0

這不是我上面說明的嗎? click事件和keydown事件都會調用預定義的函數。 –

+0

在這個意義上說,我的主要目標是減少使用的代碼,而我所尋找的技術會疊加觸發器,然後只在一行中調用函數。雖然你是對的,但是你明顯地誤解了我的觀點 – Malyo

0

您也可以觸發click事件:

$('#closePopup').click(function() { 
    popupbg.add(popup).fadeOut(); 
}); 

$(document).keydown(function(e) { 
    if (e.keyCode == 27) { 
     $('#closePopup').trigger('click'); 
    } 
});​ 
+0

有趣的方法,但它不能解決我的問題,謝謝你 – Malyo

+0

@Malyo爲什麼不呢?它應該工作正常。 – VisioN

相關問題