Элемент jQuery в области div и щелчка - PullRequest
0 голосов
/ 21 августа 2010

У меня большой DIV под названием #bigDiv.В этом div у меня есть другие элементы, такие как меню и изображения.

Я хочу, чтобы jQuery переключал #bigDiv каждый раз, когда пользователь нажимает #bigDiv NOT другие элементы (которые являются частью этого div).Как это сделать?

Например:

index.html:

<div id="bigDiv">
<ul>
<li><a href="site">Site</a></li>
</ul>

jQuery:

$("#bigDiv").click(
function{
$("#bigDiv').toggle();
});

$("li").click(
function{
//do something here
});

На этом этапе, когда я нажимаюli elemnt это все еще закрывает главный div.Я попытался с z-index, но он не работает, так как element все еще является дочерним по отношению к основному div.

Спасибо.

1 Ответ

3 голосов
/ 21 августа 2010

Вы можете предотвратить всплывание события, используя stopPropagation():

Предотвращает всплытие события в DOM-дереве, предотвращая уведомление любых родительских обработчиков о событии.

$("li").click(function(event){
    event.stopPropagation();
    //do something here
});

Кроме того, вы можете проверить, какой элемент щелкается в обработчике события bigDiv:

$("#bigDiv").click(function(event){
    var tar;
    if (event.target) targ = event.target;
    else if (event.srcElement) targ = event.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    if(targ.id == 'bigDiv')
        $("#bigDiv').toggle();
});

Также стоит прочесть: quirksmode - Введение в события и quirksmode - Свойства события

...