2009-12-01 114 views
1

我有一個函數,在一些JavaScript文件中加載到每個頁面上的頁面對象。jquery添加更多的點擊功能

我需要爲已定義的事件處理程序添加更多功能。這裏是我的意思的一個例子。

具有當前定義的單擊事件的對象將關閉出現在屏幕上的彈出式div。點擊時(只在這個頁面上),我需要它重置頁面上的一些元素。

所以,我可以很容易地解除綁定click事件,並重新綁定一個自定義的事件,但它會複製原始關閉事件中的大量代碼。

如果情況變得更糟,我可以這麼做,但我想避免爲這種特殊情況複製該代碼。

有沒有辦法,排序,追加更多的代碼到當前創建的事件?

感謝您的任何見解!

回答

0

設置點擊事件的功能,例如,

$(element).click(function(){//do stuff in here}); 

你可以添加你想要的功能位調用更多的功能或任何。

+0

@matpol我想我編輯了錯誤的一個。 Mea culpa – 2009-12-01 09:12:17

1

只是綁定另一個具有附加功能的處理程序

0

您可以使用事件委託。谷歌的一些教程的術語

基本上通過將事件綁定到一個父親的不可變元素,然後由被點擊的孩子的決定行動。通過這種方式,您可以添加/刪除類型爲x的子項,而無需綁定/重新綁定動作。

$("#parent_global_div").click(function (ev) { 
    var el = $(ev.target); 
    if(el === x){ 
     //do something 
    } 

});

0

您可以使用「綁定」,然後click方法可以在所有這些綁定事件上調用「觸發器」。

0

事件在jquery上排隊,所以所有分配/綁定事件被調用。如果由於特定的原因您需要綁定/解除綁定該特定的排隊事件,則命名該事件。

$('button').click(function(){alert(1);}); 
$('button').click(function(){alert(2);}); 
//The 2 function gets called when the button is clicked 

$('button').unbind('click');//all handlers are removed. 


//Namespaced event 
$('button').click(function(){alert(1);}); 
$('button').bind('click.custom',function(){alert(2);}); 
//The 2 function gets called when the button is clicked 


$('button').unbind('click.custom');//only the click.custom is unbind