Wie wird ein delegiertes Ereignis nur für untergeordnete Elemente behandelt?

8

Beim Delegieren von Ereignissen mithilfe von .on richten Sie die Ausrichtung auf untergeordnete Elemente aus:

Ich habe versucht: childSelector =

  • >*
  • >:nth-child(n)

Aber nichts ist ausgewählt, wenn ich mit > beginne.

%Vor%

Manchmal möchte ich ein direktes Kind ansprechen, manchmal nicht: (Pseudocode)

%Vor%

Deshalb frage ich nach einem Selektor und nicht nach einem Fix.

    
andlrc 29.03.2012, 09:15
quelle

4 Antworten

5

Sie konnten innerhalb des Handlers überprüfen, ob das Element ein Kind des Elements ist, an das der Ereignishandler delegiert wurde;

%Vor%

Siehe e.delegateTarget . Es ist erwähnenswert, dass e.delegateTarget in jQuery 1.7 eingeführt wurde und daher nicht mit älteren Versionen funktioniert.

In Bezug auf Ihre zweite Bearbeitung sind die Selektoren in ihrer aktuellen Form mehrdeutig. Es gibt keine Möglichkeit für Sie, in Code und in seiner aktuellen Form festzustellen, ob der übergebene Selektor ein Nur-Kind-Selektor sein soll. Sie können entweder einen anderen Parameter eingeben, um anzugeben, ob es sich um einen Nur-Kind-Selektor handeln soll, oder ein > am Anfang des Selektors hinzufügen (z. B.) und nach diesem suchen;

%Vor%

Oder:

%Vor%     
Matt 29.03.2012, 09:31
quelle
2

Eine Möglichkeit, nur Ereignisse zu deligieren, die von direkten untergeordneten Elementen ausgelöst werden, besteht darin, einen vollständigen Selektor für on() bereitzustellen, einschließlich des Teils, der dem übergeordneten Element entspricht:

%Vor%     
Frédéric Hamidi 29.03.2012 09:27
quelle
1

Das hat für mich funktioniert.

%Vor%     
alexndm 24.07.2013 17:38
quelle
0

Alles was Sie brauchen ist:

%Vor%

wenn es mit einem Kind des Selektors übereinstimmen soll. Es wird nur im Bereich des Selektors gesucht.

    
Joel Lundberg 29.03.2012 09:32
quelle