Event Bubbling и JQuery - PullRequest
       23

Event Bubbling и JQuery

1 голос
/ 18 января 2011

Я пытаюсь запечатлеть событие click, которое приводит к всплытию DOM к телу, проверьте, что представляет собой селектор элемента click, и затем на основании этого выберите вызов функции.

Примерно так:

<body>
    <a id="do-default-code">Default code</a>
    <a id="do-override-code">Override code</a>
</body>

И я представляю (псевдо-код) вот так.Я использую jQuery:

$('body').bind('click', function() {
    if ($(this) === $('#do-override-code')) {
        overrideCode();
    } else {

    }
});

Я понимаю, что не полностью понимаю всплывающее окно событий в этом контексте, и приведенный выше код неверен, поэтому я обращаюсь к сообществу за советом.

Ответы [ 2 ]

2 голосов
/ 18 января 2011

В вашем утверждении ваш this относится к элементу, с которым вы связали событие. В этом случае элемент тела. Таким образом, оператор if никогда не верен.

Таким образом, чтобы получить элемент, на который вы на самом деле щелкнули, необходимо изучить цель в объекте события. Что-то вроде следующего должно работать.

$('body').bind('click', function(event) {
    if ($(event.target).attr('id') == 'do-override-code')) {
        overrideCode();
    } else {

    }
});
0 голосов
/ 18 января 2011

Вам нужно будет передать событие вашей функции и проверить событие.

Эта ссылка содержит всю информацию, которую вы хотели бы знать http://www.quirksmode.org/js/events_properties.html, например

Какой элемент HTML является целью события?

, из которого вы можете легко извлечь любую семантическую информацию, которую вы хотели

...