2011-12-21 65 views
1

我想创建一个类似于每个Ajax请求后触发的事件ajaxComplete的行为,不管每个Dom元素是什么,或者不是每个Dom元素都完成。Non dom元素上的jQuery事件。 (比如ajaxComplete行为)

我使用的代码,我在我的插件了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正确识别,但函数永远不会被调用。

希望有人能帮助我。

在此先感谢

回答

1

对于任何事件处理程序,您自己创建你需要(如果使用JQ 1.7或on())使用bind()。这是因为像click()keyup()等处理程序是jQuery源中的快捷方式到bind("eventName", fn)(或jQuery 1.7 + on("eventName", fn))。您不能简单地创建一个事件,并将其用作jQuery对象上的函数。

考虑到这一点,试试这个:

$('.log').bind("openEtFoldingFieldset", function() { 
    alert("folding open"); 
    return true; 
});