2

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")イベントを受信しません。$(window)これは、セットアップでの代わりにトリガーするという事実に関連しているようです$(this)

問題は、他のオブジェクトで発生しているイベントに便乗するイベントをどのように発生させることができるかということです。

4

1 に答える 1

2

関数内の参照$.proxyを変更するために使用できます。this

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

teardown: function () {
    $(window).off("resize.myevent");
},

フィドル

ハンドラーをより簡単に削除するためにイベント名前空間を使用したので、によって生成された関数への参照は必要ありません$.proxy

于 2013-03-27T12:25:12.617 に答える