Как сделать так, чтобы моя функция jQuery «Click» запускалась только для непосредственного пользователя li, а не для дочернего li? - PullRequest
2 голосов
/ 13 июня 2011

У меня есть:

$ ('# accordion> li) .click (function () {

Но он запускается, если щелкнуть также #accordion li ol li.

Вот HTML-разметка:

<ul id="accordion"> 
   <li id="test1">
       <a href="#">Test</a>
       <ol>
            <li>
            <a href="#">test</a>     
            </li>
       </ol>
    </li>
</ul>

Ответы [ 3 ]

3 голосов
/ 13 июня 2011

Проблема в том, что события в дочерних элементах всплывают до элемента-предка.Остановите это, проверив, является ли первый предок (event.target) исходного элемента li тем, где обрабатывается функция:

$('#accordion > li').click(function (event) {
    if ($(event.target).closest('li').is(this)) {
        // it's the right one
    }
});

См.

0 голосов
/ 13 июня 2011

Более простое решение может быть:

$('#accordion > li:not(li li)').click(function () {});
0 голосов
/ 13 июня 2011

Вы можете использовать stopImmediatePropagation () из jquery, чтобы избежать его пузырей.

$('#accordion > li).click(function (event) {
     event.stopImmediatePropagation();
     //do what you need to do

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...