Почему jQuery срабатывает сразу после добавления к элементу?

Вот скрипка, иллюстрирующая проблему. Я добавляю привязку 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);
    });
});​

0
задан Neal 12 July 2012 в 16:18
поделиться