1

clickOutjQueryのイベントを書きました。非常に基本的なもので機能します。現在、ドロップダウン メニューを使用してテストを拡大しています。this閉鎖に巻き込まれているようです。clickOut呼び出し方法を変更せずにこれを修正するにはどうすればよいですか?

http://jsfiddle.net/QM6Bc/9/

(function ($) {
    'use strict';
    $.fn.clickOut = function (eventData, handler) {
        $('html').click($.proxy(function (event) {
            if (this.has(event.target).length === 0) {
                event.delegateTarget = this.get();
                console.log(this);
                if (handler === undefined) {
                    eventData(event);
                } else {
                    handler(event);
                }
            }
        }, this));
    };
}(jQuery));
jQuery('li').click(function (event) {
    jQuery(this).children().toggle('fast');
    console.log(this);
    event.stopPropagation();
});
jQuery('li li').clickOut(function () {
    console.log(this);
    jQuery(this).children().hide('fast');
});​
4

1 に答える 1

2

thisコールバックで何にもバインドしていません。試してください:

eventData.call(this, event);

handler.call(this, event);
于 2012-05-30T18:47:30.090 に答える