假设我有以下javascript:
$.each(idArray, function (index, value) {
$('#'+value).on('mouseenter', function(event) {
showTooltip();
$(document).on('click', function (event) {
if(!$(event.target).is('#'+value)) {
hideTooltip();
//remove this listener
}
});
});
});
如果触发每个'click'侦听器,我怎么能删除它?有没有办法唯一地识别它们并从其他地方删除它们?显然,我无法解除对文档元素的“点击”。
答案 0 :(得分:2)
您可以使用event.namespace。
$.each(idArray, function (index, value) {
$('#' + value).on('mouseenter', function (event) {
showTooltip();
$(document).on('click.tooltip', function (event) {
if (!$(event.target).is('#' + value)) {
hideTooltip();
//remove this listener
$(this).off('click.tooltip');
}
});
});
});
答案 1 :(得分:1)
$(document).on('click', function handlerName(event) {
if(!$(event.target).is('#'+value)) {
hideTooltip();
$(this).off('click', handlerName);
}
});
在这里,您要为匿名函数指定一个名称,然后使用它来分离处理程序。