Предотвращение открытия ссылки href, но выполнение других событий привязки
Я хочу, чтобы ссылки не открывали страницы. Поэтому я написал это:
$("a").click(function(e) {
e.preventDefault()
}
Это здорово! Но это блокирует мое другое событие:
$(".toolbar a").click(function(e) {
...action...
}
Конечно, я могу добавить свое действие к первому событию с некоторым тестом, но есть ли элегантный способ предотвратить выполнение только href-события?
ИЗМЕНИТЬ
На самом деле это работает, извините. См. Здесь скрипт @raina77ow: http://jsfiddle.net/HeFS6/
Ответы
Ответ 1
Используйте return false
вместо этого. Здесь вы можете увидеть код ниже .
$("a").click(function() {
return false;
});
$(".toolbar a").click(function() {
alert("Do something");
});
Как указано @raina77ow с этой статьей, использование return false
совпадает с вызовом event.preventDefault()
, а также event.stopPropagation()
. Поскольку у меня были проблемы без return false
на некоторых кодах в прошлом, я всегда предлагаю это.
Но самое главное здесь порядок привязки: ваше последнее связывание будет вашим первым исполняемым кодом. Итак, позаботьтесь об этом и идите.
Ответ 2
Вместо e.preventDefault()
вы пробовали return false
? Это также должно препятствовать поведению браузера по умолчанию.
Ответ 3
Нет события href. Это то, что вы в конечном итоге получите, если предотвратить щелчок по умолчанию. Вы должны просто использовать более конкретные селектора.
Ответ 4
Используйте пустое значение href, например:
<a href="#">Click me</a>
И создайте управляющую функцию для управления ссылкой:
if(controlVariable == true){
$("#myA").attr("href", "mypage.html");
}
else{
/*dont change anything..*/
/*make my obligatory fields in red...*/
}
Надеюсь, это поможет.
Ответ 5
Вы можете использовать это:
event.preventDefault();
event.stopPropagation();
//bind additional actions to the event
Ответ 6
Ответ не нужен JQuery.
function alertme() {
document.getElementById("wow").innerHTML = "Wow";
}
<a id="wow" href="#" onclick="location.href='https://google.com/'; return false;" onclick="alertme(); return false;">Click to see how this works.</a>