it-swarm.com.de

Verhindern, dass href den Link öffnet, aber andere Bindungsereignisse ausführen

Ich möchte verhindern, dass Links Seiten öffnen. Also habe ich folgendes geschrieben:

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

was großartig ist! Dies blockiert jedoch mein anderes Ereignis:

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

Sicher, ich kann meine Aktion mit einem Test zum ersten Ereignis hinzufügen, aber gibt es eine elegante Möglichkeit, das Ausführen von only href-Ereignissen zu verhindern?

EDIT

Tatsächlich funktioniert es, sorry. Siehe @ raina77ow Geige hier arbeiten: http://jsfiddle.net/HeFS6/

25
Benoit R

Verwenden Sie stattdessen return false. Sie können den Code unten sehen, der hier arbeitet.

​$("a").click(function() {
    return false;
});

$(".toolbar a").click(function() {
    alert("Do something");
});​

Wie aus @ raina77ow mit diesem Artikel hervorgeht, ist return false dasselbe wie das Aufrufen von event.preventDefault() und auch von event.stopPropagation(). Da ich in der Vergangenheit Probleme mit return false an einigen Codes hatte, schlage ich es immer vor.

Das Wichtigste dabei ist jedoch die Bindungsreihenfolge: Ihre letzte Bindung wird Ihr zuerst ausgeführter Code sein. Kümmern Sie sich darum und gehen Sie.

29

Haben Sie anstelle von e.preventDefault()return false versucht? Dies sollte auch das Standardverhalten des Browsers verhindern.

1
Matt C

Es gibt keine href Veranstaltung. Das ist, was Sie am Ende haben, wenn Sie die Standardeinstellung beim Klicken verhindern. Sie sollten nur spezifischere Selektoren verwenden.

0
Hazem Salama