2 Stimmen

jquery callback Besonderheit

Gibt es eine Besonderheit mit Ereignis-Callback mit jQuery verbunden. Sagen Sie, ich registriere einen Mousedown-Ereignis-Callback auf ein div-Element, und auch auf das Dokument. Welche würde ausgelöst, wenn ich auf das div klicken? Spielt die Reihenfolge der Registrierung eine Rolle? oder die Spezifität (wie css)?

Danke.

5voto

alex Punkte 457905

Es wird im DOM-Baum auftauchen und alle anderen Ereignisse dieses Typs aufrufen.

Sie können dies verhindern mit event.stopPropagation() .

Ihr Beispiel

Wenn Sie die Ereignisse wie folgt zuordnen...

$(document).mousedown(function() { alert('document'); });

$('div').mousedown(function() { alert('div'); });

Ein Mausklick auf eine beliebige Stelle löst document Handler, und erhalten einen Warndialog mit Dokument .

Maus nach unten auf eine beliebige div löst die div Handler, und dann das DOM bis hin zu document wo es seinen Event-Handler auslöst. Sie erhalten zwei Warndialoge; zunächst den div eine und dann die Dokument ein.

2voto

Peter Olson Punkte 130102

Beide Ereignisse werden ausgelöst, zuerst das Div und dann der Klick auf das Dokument.

1voto

BrunoLM Punkte 93432

Es wird beides ausführen, von innen nach außen. Wenn Sie in das div klicken, wird das div-Ereignis ausgelöst, dann das Dokument. Beispiel auf jsFiddle

$(window.document).click(function(e){
    alert("doc");
});

$("div").click(function(e){
    alert("div");
});

Sie können verhindern, dass er andere Ereignisse auslöst mit e.stopImmediatePropagation() . Siehe dieses Beispiel

$(window.document).click(function(e){
    alert("doc");
});

$("div").click(function(e){
    alert("div");
    e.stopImmediatePropagation(); // prevents $(doc) from rising
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X