2010-08-20 2 views
1

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

<a href="#">Some text</a> 

должен возвращать ложь. Он может остановить прокрутку страницы после клика.

$("a[href='#']").bind("click", function() { return false; }); 

Он может остановить прокрутку, но «возвратить ложную» остановить пузыри тоже! Так что, если у меня есть следующий код

HTML

<div class="clickable"> 
    <a href="#">Text</a> 
</div> 

Javascript (JQuery)

$("a[href='#']").bind("click", function() { return false; }); 
$(".clickable").bind("click", function(){alert("It works!");}) 

и если я нажимаю на "Текст", нет никакого предупреждения.

Могу ли я восстановить пузырь? Или, может быть, есть еще один общий способ вернуть false из onclick event-прослушивателя каждого такого «тега»? Или единственный способ добавить функцию слушателя() {alert («Это работает!»);} На «a»?

ответ

1

Изменить подпись вашей click функция, чтобы принять арг событий и использовать preventDefault:

$("a[href='#']").bind("click", function (e) { e.preventDefault(); }); 
$(".clickable").bind("click", function(){alert("It works!");}) 

Вот working fiddle.

1

Чтобы остановить что-то из кипящего я всегда следить за этим:

$('myAnchor').live("click", function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    //or if you want to stop all handlers 
    e.stopImmediatePropagation(); 

    //code here 

    //for IE etc. 
    return false; 
}); 
+0

Он не хочет, чтобы остановить что-то бульканье, он хочет, чтобы бульканье. – GenericTypeTea

+0

Остановить распространение будет препятствовать его пузырению – MRW

+0

@GenericTypeTea - Ах, я неверно истолковал "stop bubbling too" – MRW