我为 jQuery 编写了一个clickOut
事件。它适用于非常基本的东西。现在,我正在使用下拉菜单扩大测试规模。似乎this
被卷入了封闭之中。我怎样才能在不改变clickOut
调用方式的情况下解决这个问题?
(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');
});