Вот скрипка, иллюстрирующая проблему. Я добавляю привязку jQuery one по щелчку одного элемента к элементу «html». Я не ожидаю, что обработчик события «один» будет срабатывать до следующего щелчка, но он срабатывает при щелчке, который добавляет привязку. Кажется, это не проблема, если это более конкретный элемент, к которому добавляется обработчик события «один», но это происходит, когда я использую «html» или «тело» в качестве элемента, что я и хочу сделать.
Это не имеет для меня смысла, я думаю, что первый щелчок добавит один для следующего щелчка, и он не сработает при нажатии на ссылку.
Кстати, мою фактическую проблему, вероятно, можно было бы решить лучше, но я наткнулся на это, и мне стало любопытно, почему это не сработало, как я ожидал.
Код:
html:
hello
this example 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);
});
});