我想创建一个类似于每个Ajax请求之后触发的事件ajaxComplete的行为,无论如何,无论是否在每个Dom元素上都已完成。
我使用了我用于Jquery核心代码的代码
// Attach a bunch of functions for handling common AJAX events
jQuery.each("openEtFoldingFieldset closeEtFoldingFieldset".split(" "), function(i, o) {
jQuery.fn[o] = function(f) {
return jQuery.fn.on(o, f);
};
在我的插件中,我触发openEtFoldingFieldset事件
var etFoldingFieldsetOpenEvent = jQuery.Event("openEtFoldingssFieldset");
jQuery.fn.trigger(etFoldingFieldsetOpenEvent);
在我的页面脚本中,我尝试为触发器添加句柄
$('.log').openEtFoldingFieldset(function() {
alert("folding open");
return true;
});
就像我为ajaxComplete做的那样
$('.log').ajaxComplete(function() {
$(this).text('Triggered ajaxComplete handler.');
})
我没有得到任何错误,函数openEtFoldingFieldset被jQuery正确识别,但函数永远不会被调用。
希望有些人可以帮助我。
提前致谢
答案 0 :(得分:1)
对于您自己创建的任何事件处理程序,您需要使用bind()
(如果使用jQ 1.7,则需要on()
)。这是因为click()
和keyup()
等处理程序是jQuery源代码中的快捷方式bind("eventName", fn)
(或jQuery 1.7 + on("eventName", fn)
)。您不能简单地创建一个事件,并将其用作jQuery对象的函数。
考虑到这一点,试试这个:
$('.log').bind("openEtFoldingFieldset", function() {
alert("folding open");
return true;
});