Событие для родителя <a>, которое возвращает false от слушателя события onclick - PullRequest
2 голосов
/ 20 августа 2010

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

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

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

$("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 каждого такого тега "a"?Или единственный способ - добавить функцию прослушивателя () {alert («Это работает!»);} На «a»?

Ответы [ 3 ]

2 голосов
/ 20 августа 2010

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

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

Вот рабочая скрипка .

1 голос
/ 20 августа 2010

Чтобы что-то не пузырилось, я всегда следую этому:

$('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;
});
1 голос
/ 20 августа 2010
<a href="#" onclick="return false;">Some text</a>

Ваши функции кликов, связанные с jQuery, должны продолжать работать.

Пример:

http://jsfiddle.net/mU2dq/1/

...