Wenn eines von zwei Elementen existiert, tun Sie etwas

Lesezeit: 2 Minuten

Benutzer-Avatar
eozzy

Ich tue dies derzeit, um zu überprüfen, ob eines von zwei Elementen vorhanden ist:

if ($(".element1").length > 0 || $(".element2").length > 0) {
  //do stuff...
}

Gibt es einen besseren Weg, um dasselbe umzuschreiben? Ich meine, ist .length das Gleiche wie .length > 0?

  • Möglicherweise stellen Sie fest, dass diese Frage Ihre Frage beantwortet.

    – Vincent Ramdhanie

    14. Dezember 2009 um 5:43 Uhr

Benutzer-Avatar
micahwittman

if ($(".element1").is('*') || $(".element2").is('*')) {
    // code
}

BEARBEITEN (pro Kommentar) Elemente nach mehreren Klassen in einem Aufruf auswählen:

if ($(".element1, .element2").is('*')) {
    // code
}

  • Beachten Sie, dass Sie die beiden Selektoren auch wie folgt zu einem kombinieren können: $(".element1, .element2").

    – bkat

    14. Dezember 2009 um 5:43 Uhr

  • Ist „.is()“ dasselbe wie „.length > 0“? Was ist der Unterschied, falls vorhanden?

    – eozzy

    14. Dezember 2009 um 5:53 Uhr

  • Nimbuz, guter Beitrag zur Verwendung von .is() – bennadel.com/blog/…

    – Michael Wittmann

    14. Dezember 2009 um 6:07 Uhr

  • Die SO-Frage, auf die Vincent verlinkt ist, behandelt das Thema gründlich – gut zu lesen.

    – Michael Wittmann

    14. Dezember 2009 um 6:09 Uhr

Benutzer-Avatar
eozzy

if ( $('#myDiv')[0] ) { //do something }

..funktioniert am besten!

Hier gefunden.

Benutzer-Avatar
Aaron

Alle jQuery-Elemente haben die .length Eigentum. Sie können einfach gehen:

if ($('img').length) // Implies: If this element exists..

http://jqueryfordesigners.com/element-exists/

!$.isEmptyObject($.find('#urId'))

Dies gibt “true” zurück, wenn das Element existiert, und False, wenn nicht

Prost 🙂

Verwenden Sie einfach .each().

$(".element1").each(function(){
  //Do Something here
}

Einfach…

Benutzer-Avatar
Gemeinschaft


Siehe Extrem aktualisierte Version dieses Plugins hier! Verwendet jetzt die Callback-Funktion, damit Sie die Verkettbarkeit beibehalten können, wenn Sie dies wünschen. Kann komplett ersetzen if-Anweisung oder kann noch innerhalb verwendet werden if-Anweisung


Sie könnten dafür ein sehr einfaches jQuery-Plug-in erstellen:

jsFiddle

(function($) {
    if (!$.exist) {
        $.extend({
            exist: function(elm) {
                if (typeof elm == null) return false;
                if (typeof elm != "object") elm = $(elm);
                return elm.length ? true : false;
            }
        });
        $.fn.extend({
            exist: function() {
                return $.exist($(this));
            }
        });
    }
})(jQuery);

VERWENDEN

//  With ID 
$.exist("#eleID");
//  OR
$("#eleID").exist();

//  With class name
$.exist(".class-name");
//  OR
$(".class-name").exist();

//  With just tag // prolly not best idea aS there will be other tags on site
$.exist("div");
//  OR
$("div").exist();

Mit Ihrer If-Anweisung

if ($(".element1").exist() || $(".element2").exist()) {
    ...stuff...
}

Natürlich könnte dieses Plugin weiter ausgebaut werden, um viel ausgefallener zu sein (mehrere Anrufe gleichzeitig verarbeiten, nicht vorhandene Elemente basierend auf einem Kinderwagen erstellen), aber so wie es jetzt ist, macht es eine sehr einfache, sehr benötigte Funktion … Tut es dieses Element existiert? Rückkehr True oder False

jsFiddle

Benutzer-Avatar
Benutzer3336882

$.fn.exists = function(ifExists) {
    return this.length ? ifExists.call(this, this) : this;
};

Verwendungszweck:

$('.element1, .element2').exists(function(els) {
    // this and els refers to $('.element1, .element2')
});

1282520cookie-checkWenn eines von zwei Elementen existiert, tun Sie etwas

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy