2010-12-03 13 views
0

Ich bin etwas verwirrt darüber, wie Jquery Delegate Funktion funktioniert.jQuery Delegat

Wenn ich eine Variable namens Picker, die enthält.

Diese Variable enthält ein div, , das wiederum eine unbekannte Anzahl von Spannen enthält.

Ich bin auf der Suche nach einigen Klickhandlern auf jedem einzelnen Bereich innerhalb der Picker div.

Ist Delegierter der beste Weg, dies zu tun?

Wenn ja, wie würde ich das tun?

Antwort

4

So sieht Ich gehe davon aus Picker etwas wie folgt aus:

var picker = $("div.someDiv"); 

Und Sie wollen Handler für alle span Elemente anhängen klicken, das Kind sind Knoten div.someDiv.delegate() verwenden.

Hier ist, wie ich es gehen würde:

picker.delegate("span", "click", function(eventObj) { 
    // do what you want 
}); 

.delegate() Werke von Vorteil der Tatsache, dass die meisten DOM-Ereignisse Blase oder propagieren. .delegate() ist in dieser Hinsicht sehr ähnlich zu .live(). .delegate() unterscheidet sich darin, dass Sie Ihren Handler nicht einfach an den Dokumentstamm anhängen und den Handler auslösen, wenn Ihr Ereignis vollständig durchgebrannt ist, sondern das Ereignis an das Element anfügt, das Sie an $() übergeben, und dann nach Ereignissen Ausschau hält von den Kindern dieses Elements.

+0

Super Antwort, Danke – Hailwood

2

Yep, sollten Sie in der Lage sein, es zu tun:

picker.delegate("span", "click", function() { 
    // do something to $(this) here! 
}); 
+0

Prost für die Antwort, ich habe Alex Antworten reinly akzeptiert für die Tatsache, dass es eine Beschreibung wie Delegat funktioniert :) – Hailwood

0

Was mit

$("#picker span").click(function(){ 
    //I was clicked 
}); 

falsch?

+0

Was ist los mit Delegation? – user113716