【问题标题】:jQuery event on Non dom element. (like ajaxComplete behavior)非 dom 元素上的 jQuery 事件。 (如 ajaxComplete 行为)
【发布时间】:2011-12-21 18:19:34
【问题描述】:

我想创建一个类似于在每个 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 正确识别,但从未调用该函数。

希望有人能帮助我。

提前致谢

【问题讨论】:

    标签: jquery


    【解决方案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;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 2013-10-22
      • 2011-05-03
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多