2011-01-13 13 views
0

Mit der Kraft der jquery ...JQuery Fügen Sie zwei Auswahlen zusammen

Ich versuche zusammen zwei Auswahlen hinzufügen, sie beide die gleiche Art von Element enthalten (<option>).

Aber die add(..) Methode scheint nicht Ball zu spielen.

var matchingRemovedOptions = removedOptions.filter(function() { 
    return this.text.toLowerCase().match(str.toLowerCase()); 
}); 
tempOptions.add(matchingRemovedOptions); 
console.log(tempOptions.length); 
console.log(matchingRemovedOptions.length); 

Wie Sie sehen im einige Option Elemente aus der removedOptions Auswahl, um herauszufiltern versuchen, und fügen Sie diese an die tempOptions Auswahl.

Aber wenn die console.log verwendet wird, bleibt die Länge von tempOptions gleich wie in, wird nicht erhöht.

Antwort

4

.add()kehrt ein Satz mit den Elementen/Selektor hinzugefügt, es nicht wirklich sie auf den Satz hinzufügen, die es auf genannt wird. Um den gewünschten Effekt, müssen Sie den Satz aktualisieren es zurückgibt, wie folgt aus:

tempOptions = tempOptions.add(matchingRemovedOptions); 

Wenn Sie denken, über alle anderen tree traversal functions, sie die gleiche Art und Weise verhalten, beispielsweise obj.find("...") nicht obj ändern was gefunden wird, nur die Rest der Kette arbeitet auf diesem Set, das .find() zurückgibt.

2

Sie brauchen eine andere assignation zu tun:

tempOptions = tempOptions.add(matchingRemovedOptions); 
+0

ich kann es nicht glauben, sobald ich fertig war, diese Nachricht zu veröffentlichen, dämmerte es mir, als ich auf den Code zurückblickte. – Mike

+0

Immer so :) –