jQuery多点击处理程序..如何确保点火顺序?
-
05-07-2019 - |
题
我有2个点击处理程序绑定到这样的元素:
在包含我绑定的控件的文件中,我有第一个处理程序,它执行一些特定于该控件的功能
$("#mycontrol").live("click", function() { alert("foo"); });
在使用该控件的主页面中,我有另一个处理程序绑定到该元素以获取页面特定的功能
$("#mycontrol").live("click", function() { alert("bar"); });
我使用'live'因为AJAX调用一直在改变控件,所以处理程序将被重新注册。但是,我需要一种方法,以便“foo”发生在“bar”之前一直......有什么建议吗?
解决方案
尝试将点击事件合并为一个:
function foo() { alert("foo"); }
function bar() { alert("bar"); }
$("#mycontrol").live("click", function(){ foo.call(this); bar.call(this); });
其他提示
怎么样:
$("#mycontrol").live("click", doFooBar);
function doFooBar() {
alert("foo");
alert("bar");
}
您可以执行以下操作:
var arrEventHandlers = [];
function registerClickEvent(fnCallback)
{
arrEventHandlers.push(fnCallback);
}
registerClickEvent (function () { alert ("Foo"); });
registerClickEvent (function () { alert ("Bar"); });
function clickHandler ()
{
for (var i = 0, size = arrEventHandlers.length; i < size; i++)
{
arrEventHandlers[i].apply (...);
}
}
$("#mycontrol").live("click", clickHandler);
不隶属于 StackOverflow