2009-12-01 174 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