If one of two elements exists, do something

前端 未结 7 856
遇见更好的自我
遇见更好的自我 2021-02-02 05:21

I currently do this to check if one of two elements exists:

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


        
相关标签:
7条回答
  • 2021-02-02 06:01

    All jQuery elements have the .length property. You can just go:

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

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

    0 讨论(0)
  • 2021-02-02 06:02
    if ($(".element1").is('*') || $(".element2").is('*')) {
        // code
    }
    

    EDIT (per comment) Select elements by multiple classes in one call:

    if ($(".element1, .element2").is('*')) {
        // code
    }
    
    0 讨论(0)
  • 2021-02-02 06:09
    $.fn.exists = function(ifExists) {
        return this.length ? ifExists.call(this, this) : this;
    };
    

    usage:

    $('.element1, .element2').exists(function(els) {
        // this and els refers to $('.element1, .element2')
    });
    
    0 讨论(0)
  • 2021-02-02 06:14

    See Extremely updated version of this plugin here! Now uses callback function so you can maintain chainability if you choose. Can completely replace if statement or can still be used within if statement


    You could create a very simple jQuery plug-in for this, as such:

    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);
    

    USE

    //  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();
    

    With your If statement

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

    Of course this plugin could be further extended to be much more fancy (handling multiple calls at once, creating non-existing elements based on a pram), but as it stand now, it does a very simple, very needed function ... Does this element exist? return True or False

    jsFiddle

    0 讨论(0)
  • 2021-02-02 06:23

    Just use .each().

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

    Simple...

    0 讨论(0)
  • 2021-02-02 06:25
    if ( $('#myDiv')[0] ) { //do something }
    

    ..works best!

    Found here.

    0 讨论(0)
提交回复
热议问题