jQuery Предотвращает поведение нажатия div при нажатии на встроенную ссылку - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть div, содержащий href.У div есть событие jQuery live click:

$(".item").live("click", function() { 
    window.location = this.id;  
});

В div у меня есть href:

<div class="item" id="/test.html">
    <a href="javascript:void(0);" class="test" id="123">link</a>
</div>

Также с событием live click:

$(".test").live("click", function() { 
    $(".item").unbind('click');
    alert(this.id);
});

Я пытаюсь добиться того, чтобы щелчок по div загружал идентификатор div в качестве местоположения, в то время как нажатие на ссылку внутри div делает свое дело, не допуская поведения щелчка div.

Я знаю, что могу убрать href изDiv, но я не хочу этого; -)

1 Ответ

4 голосов
/ 14 ноября 2011

ОБНОВЛЕНО

Если вы можете, используйте jQuery 1.7, чтобы выполнить делегирование события с помощью .on и остановить распространение щелчков привязки:

$(document).on("click","a.test", function(e) { 
    e.stopImmediatePropagation();
});

$(document).on("click","div.item", function(e) { 
    // whatever
});

http://jsfiddle.net/AuHjA/3/

В противном случае используйте .delegate вместо .live:

$(document).delegate("a.test", "click", function(e) { 
    e.stopPropagation();
});

$(document).delegate("div.item", "click", function(e) { 
    //whatever
});

http://jsfiddle.net/mblase75/AuHjA/4/

...