Подтвердить что ты не робот

Предотвращение открытия ссылки href, но выполнение других событий привязки

Я хочу, чтобы ссылки не открывали страницы. Поэтому я написал это:

$("a").click(function(e) {
    e.preventDefault()
}

Это здорово! Но это блокирует мое другое событие:

$(".toolbar a").click(function(e) {
    ...action...
}

Конечно, я могу добавить свое действие к первому событию с некоторым тестом, но есть ли элегантный способ предотвратить выполнение только href-события?

ИЗМЕНИТЬ

На самом деле это работает, извините. См. Здесь скрипт @raina77ow: http://jsfiddle.net/HeFS6/

4b9b3361

Ответ 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>