jQuery特殊事件API

jQuery special event API

本文关键字:API 事件 jQuery      更新时间:2023-09-26

我正在创建一个特殊事件,正如Brandon Aaron在这里的文章中所描述的那样此事件需要在窗口大小调整时触发。

$.event.special.myevent = {
setup: function () {
    $(window).bind("resize", $.event.special.myevent.handler);
},
teardown: function () {
    $(window).unbind("resize", $.event.special.myevent.handler);
},
handler: function (e) {
    var $this = $(this);
    //some other rulles
    console.log("handler function");
    e.type = "myevent";
    jQuery.event.handle.apply(this, arguments);
}
}

绑定事件:

$("#myDiv1").bind("myevent", function () {
    alert("my event sub");
})

问题:$("#myDiv1")没有接收到事件。这似乎与在设置I中触发$(window)而不是$(this)有关。

问题是我怎么能有一个事件,背上发生在其他对象上的事件。

您可以使用$.proxy来更改函数内部的this引用:

setup: function () {
    $(window).on("resize.myevent", $.proxy($.event.special.myevent.handler, this));
},
teardown: function () {
    $(window).off("resize.myevent");
},

小提琴

为了更容易地删除处理程序,我使用了事件名称空间,因此您不需要引用由$.proxy生成的函数。