Ich arbeite daran, eine semantische Methode für die Suche nach Elementen mit jQuery zu erstellen. Mit $("#element").length > 0
fühlt sich einfach nicht wirklich sehr gut zu mir gefasst, so dass ich meine eigenen Wähler zusätzlich für den Einsatz in .is
machen:Rückgabe "True" auf leeren jQuery Selector Array?
if($("#element").is(":present")) {
console.log("It's aliiiveeee!!");
}
Dieser Teil war einfach, wie folgt aus:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
}
});
ich möchte noch einen Schritt weiter gehen, und macht es einfach, zu sehen, ob ein Element nicht existiert, unter Verwendung ähnliche Syntax:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
},
absent: function(a) {
return $(a).length === 0;
}
});
$(function() {
if($("#element").is(":absent")) {
console.log("He's dead, Jim.");
}
});
Aber dieser Teil ist überraschend schwer zu tun. Ich denke, das liegt daran, dass ich die zurückgegebenen Elemente reduziere, um ein Ergebnis zu erhalten, und den Selektor auf .lenge === 0 zu setzen, ist dasselbe wie die Frage nach keinen Elementen: Er gibt false zurück, egal was passiert.
ich viele verschiedene Weisen versucht haben, die Dinge zu ändern und dies wahr zurück zu bekommen, wenn das Element nicht vorhanden ist, und falsch, wenn es tut:
return $(a).length === 0;
return !($(a).length > 0);
if(!($(a).length > 0)) {
return true;
}
if($(a).length > 0) {
return false;
} else {
return true;
}
return !!($(a).length === 0);
// etc...
Gibt es eine einfache Möglichkeit, Erhalten Sie das, um nur wahr zurückzugeben, wenn das Element nicht existiert, und falsch, wenn es das tut?
Also, '.is' ist nicht wirklich für die Rückgabe von True entworfen, wenn keine Elemente in den übereinstimmenden Selektoren vorhanden sind? Eine andere Option, die ich in Erwägung gezogen hatte, war: 'if ($ (" # element "). Is (": not (: present) ")) { console.log (" Er ist tot, Jim. "); } ' Aber seltsamerweise funktioniert das auch nicht. –
@Code Junkie: Auch hier haben Sie keine Elemente, die '.is()' mit verwenden, so dass die Funktion einfach nicht aufgerufen wird. Egal, welchen Selektor Sie werfen, nichts wird passieren! – BoltClock
Also gibt es möglicherweise keine Möglichkeit, bei einem leeren Selektorergebnis true zurückzugeben? –