Heim >Web-Frontend >js-Tutorial >Wie kann ich verhindern, dass übergeordnete Klickereignisse ausgelöst werden, wenn auf untergeordnete Elemente geklickt wird?
Wenn Sie auf ein Element innerhalb eines übergeordneten Elements klicken, das beide über Klickereignis-Listener verfügt, können beide Ereignisse ausgelöst werden. Dieses als Ereignis-Bubbling bezeichnete Verhalten kann zu unerwünschten Ergebnissen führen, wenn Sie nicht möchten, dass das Ereignis des übergeordneten Elements gleichzeitig ausgelöst wird.
In Ihrem speziellen Szenario tritt dieses Problem mit einem anklickbaren Div auf, das einen Anker enthält Tags. Um das Problem zu lösen, erkunden wir zwei Ansätze:
Um zu verhindern, dass das Klickereignis des übergeordneten Divs ausgelöst wird, wenn auf einen Anker geklickt wird, überprüfen Sie den Ursprung des Ereignisses selbst. jQuery stellt eine e.target-Eigenschaft innerhalb der an Ereignishandler übergebenen Ereignisargumente bereit.
$("#clickable").click(function(e) { var senderElement = e.target; if($(senderElement).is("div")) { window.location = url; return true; } });
Bei diesem Ansatz überprüfen Sie anhand seines Selektors, ob das Ereignis vom div-Element stammt. Wenn es sich nicht um das Div handelt, wird das window.location-Änderungsereignis nicht ausgelöst.
Alternativ können Sie das Sprudeln des Klickereignisses für Anker verhindern, indem Sie die Methode e.stopPropagation() in ihrem Klickereignishandler verwenden:
$("#clickable a").click(function(e) { e.stopPropagation(); // Do something specific to the anchor });
Mit diesem Ansatz können die Das Klickereignis des Ankers führt seine eigene Logik aus, ohne das Ereignis an seine übergeordneten Elemente weiterzugeben, wodurch effektiv verhindert wird, dass das Klickereignis des Div ausgelöst wird.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass übergeordnete Klickereignisse ausgelöst werden, wenn auf untergeordnete Elemente geklickt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!