这是一个说明问题的小提琴。我在单击一个元素到“html”元素时添加了一个 jQuery one 绑定。我不希望“一个”事件处理程序在下一次单击之前触发,但它会在添加绑定的单击时触发。如果它是添加了“one”事件处理程序的更具体的元素,这似乎不是问题,但是当我使用“html”或“body”作为元素时会发生这种情况,这就是我想要做的。
这对我来说没有意义,我认为第一次点击会为下一次点击添加一个点击,它不会在点击链接时触发。
顺便说一句,我的实际问题可能会以更好的方式解决,但我遇到了这个问题,很好奇为什么它没有按我的预期工作。
代码:
html:
<div id='hello'>hello</div>
<a class="title" href="#">this example</a> is a test
js:
$(function() {
$('a.title').click(function() {
var htmlClickBind = function (e) {
console.log('clicked on html, e.target = ' + e.target);
console.log(e.target == '');
if (!$(e.target).is('a') ) {
console.log('cleared click event');
}
else {
$('html').one('click', htmlClickBind);
}
};
$('html').one('click', htmlClickBind);
});
});