Verwenden Sie die Listenfunktionen von UnsCore.js zur Sammlung von JQuery -Objekten
-
26-10-2019 - |
Frage
Ich arbeite mit einer App, die sowohl jQuery als auch unterstriche.js verwendet. Ich möchte in der Lage sein, einige der Iteratorfunktionen von Unterstrichen zu verwenden, wie z. any()
und all()
über eine Sammlung von JQuery -Objekten. Gibt es eine Möglichkeit, dies zu tun? Ich würde gerne etwas Ähnliches wie folgt tun:
checkboxes = $("input[type=checkbox]");
_.filter(checkboxes, function(box) {
return box.is(":checked");
});
Dies wirft jedoch einen Fehler aus:
Uncaught TypeError: Object #<HTMLInputElement> has no method 'is'
Ich gehe also davon aus, dass Box in diesem Zusammenhang nicht wie ein JQuery -Objekt handelt.
Lösung
Du musst wickeln box
in jQuery:
checkboxes = $("input[type=checkbox]");
checkboxes = _.filter(checkboxes, function(box) {
return $(box).is(":checked");
});
Anstatt für jedes einzelne Element in der Sammlung ein neues Objekt zu erstellen, konnten Sie nur den Native verwenden box.checked
:
checkboxes = $("input[type=checkbox]");
checkboxes = _.filter(checkboxes, function(box) {
return box.checked;
});
Als Randnotiz: JQuery hat eine eigene Filtermethode:
checkboxes = $("input[type=checkbox]").filter(function() {
return $(this).is(":checked");
});
Darüber hinaus müssen Sie in Ihrem Beispiel sicherstellen, dass Sie filtern müssen? Sie könnten das genauso leicht wie Ihren Selektor verwenden:
checkboxes = $("input[type=checkbox]:checked")
Andere Tipps
Hier box
ist ein HTMLInputElement
Geben Sie Objekt ein. Es ist kein JQuery -Objekt. Wie .is
ist eine jQuery -Objektmethode, Sie benötigen JQuery -Objekt von box
.
Es kann nur gemacht werden von, $(box)
. Dann bewerben .is()
.
$(box).is(":checked");