if ($('#myElement').length > 0) {
// it exists
}
Oder um daraus eine schicke Funktion mit Callback zu machen
// Tiny jQuery Plugin
// by Chris Goodchild
$.fn.exists = function(callback) {
var args = [].slice.call(arguments, 1);
if (this.length) {
callback.call(this, args);
}
return this;
};
// Usage
$('div.test').exists(function() {
this.append('<p>I exist!</p>');
});
Sie benötigen nicht die „> 0“, Sie können einfach schreiben
if ( $('#myElement').length ) {
// es existiert
}
Nein, das stimmt nicht, da jQuery immer ein Objekt mit Länge 0 zurückgibt
Es stimmt. Wenn das Element existiert: Länge > 0 und Bedingung ist wahr.
Wenn das Element nicht existiert: Länge = 0 und Bedingung ist falsch
Das ist richtig. Sie müssen NICHT length > 0 sagen, denn 1 = wahr, 0 = falsch.
Eliazer, Sie haben wahrscheinlich jemanden gehört, der sagte: „JQuery gibt immer ein Objekt zurück“, und deshalb denken Sie, dass jede FUNKTION von jQuery ein Objekt zurückgibt. Der STANDARD-Selektor von jQuery „$()“ tut das immer. Seine Funktionen tun das jedoch nicht immer… z.B. „has“ und „is“… oder „length“
Length gibt 0 oder 1 zurück, und da 1 = wahr, 0 = falsch.
ziemlich gut.
Danke Nathan.
Noch einfacher und wiederverwendbar, Sie können eine Funktion definieren
jQuery.fn.exists = function() { return this.length>0; };
Und sie überall verwenden, einfach so
if($(‘#myElemento).existe()) { … }
Umm, ich glaube, ich sehe einen Rechtschreibfehler in der letzten Zeile Ihres Kommentars
if($(‘#myElemento).existe()) { … }sollte sein
if($(‘#myElemento).exists()) { … }(existe im Vergleich zu exists)
Besser,
if($(element).size()){
// …
}
Das ist überhaupt nicht besser.
jQuery#sizegibt einfach dielength-Eigenschaft zurück, also sparen Sie sich den Funktionsaufruf und greifen Sie direkt auf dielength-Eigenschaft zu.schönes Tutorial :P
Aber warum benutzen Sie nicht
$('#myElement')[0]? – gibt das erste DOM-Element oderundefinedzurück, denke ich.Ich benutze das hier
if($(“element”)[0] || $(“element”)[0])
{
// tue etwas
}
p.s. Beispiel für mehrere Elemente
Ich denke, „!=“ ist performanter als „>“, was meinen Sie dazu?
if ( $(‘#myElement’).length != 0 ) {
// es existiert
}
0 bedeutet ‚falsch‘
>= 1 bedeutet ‚wahr‘
if( $(‘#selector’).length )
{
// ausführen, wenn Länge >= 1
}
else
{
// ausführen, wenn Länge = 0
}
Hallo Leute, diese Überprüfung ist nett, aber ich werde verrückt, wenn ich suche, wie ich diese Funktion auslösen kann, wenn ein Element im DOM-Kontext erstellt wird. Grundsätzlich möchte ich #something.cycle stoppen, wenn ein iFrame in meinem Dokument erscheint (vom Live-Editor aus JS)….
Jordi,
Haben Sie herausgefunden, wie man eine Funktion auslöst, wenn ein Element erstellt wird? Ich stehe vor diesem Problem und finde nicht viel, das helfen würde.
Vielen Dank,
-N8
Das könnte von Hilfe sein
http://stackoverflow.com/questions/14667770/how-to-call-a-javascript-function-when-iframe-finished-loading
http://stackoverflow.com/questions/6386128/how-can-i-call-a-function-after-an-element-has-been-created-in-jquery
Leute, ich habe das benutzt und es funktioniert nicht
es wird nicht erkannt
if($(‘#body’).length) bla bla
natürlich, wenn ich ein id body im body-Tag verwende, funktioniert es, aber wenn es keine id='body' hat, funktioniert dieser Detektor überhaupt nicht
bedeutet immer, dass Sie die ID abgleichen. Sie sollten $(‘body‘) anstelle von $(‘#body‘) verwenden
Funktioniert diese Funktion mit „live“ oder „bind“?
Ich habe es nicht überprüft, aber das sollte es tun, da es ‚this‘ zurückgibt;
live esdck
Hey, dieser Code funktioniert nicht
$(‘#stop’).bind(‘click’, function(){
stopMove();
jQuery.fn.exists = function(){return this.length>0;}
Brauche etwas Hilfe. Ich habe es ungefähr 1000 Mal benutzt, aber dieses Mal bekomme ich es immer noch nicht richtig hin
Meine if-Anweisung sieht so aus
if($(‘#s’+user_id + ‘ .course_stats_user’).length > 0){
}
‚#s‘+user_id + ‚ .course_stats_user‘ existiert nicht, aber es geht trotzdem in die if-Schleife… irgendwelche Ideen..
NVM.. es ist jetzt gelöst..
Ich habe so lange damit herumgespielt… Überlassen Sie es CSS-Tricks, wertvolles Wissen zu verbreiten. Danke!
Die Verwendung von .exists() scheint die logischere Wahl gegenüber .length zu sein, oder?
Ich sehe viele Möglichkeiten in der Diskussion, um die ID eines Divs mit jQuery zu überprüfen.
Ich habe getestet und alle sind korrekt.
Ich benutze if( $(‘#myElement’).length) für schnelle Nutzung.
Danke für den schönen Beitrag.
Ein nützlicher Beitrag, insbesondere die
exists()-Funktion. Nicht explizit oben erwähnt, aber erwähnenswert, dass dieexists()-Methode verkettbar ist.Eine leichte Anpassung/Sicherheitsüberprüfung wäre, zu prüfen, ob das erste übergebene Argument tatsächlich eine Funktion ist