jQuery中的clickOut事件

时间:2012-05-30 18:39:01

标签: jquery events click

我为jQuery写了一个clickOut事件。它适用于非常基本的东西。现在,我正在使用下拉菜单扩展测试。好像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');
});​

1 个答案:

答案 0 :(得分:2)

您没有将this绑定到回调中的任何内容,请尝试:

eventData.call(this, event);

handler.call(this, event);