如果存在两个元素之一,请执行某些操作

时间:2009-12-14 05:38:24

标签: jquery exists

我目前这样做是为了检查是否存在两个元素之一:

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

有没有更好的方法来重写相同的?我的意思是,.length.length > 0相同吗?

7 个答案:

答案 0 :(得分:48)

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

编辑(每条评论)在一次通话中按多个班级选择元素:

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

答案 1 :(得分:25)

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

..效果最好!

找到here

答案 2 :(得分:16)

所有jQuery元素都具有.length属性。你可以去:

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

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

答案 3 :(得分:2)

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

如果元素存在则返回“true”,否则返回False

欢呼声 :)

答案 4 :(得分:1)


See Extremely updated version of this plugin here!现在使用回调函数,以便您可以选择保持可链接性。可以完全替换 if语句,或者仍然可以在 if语句中使用


你可以为此创建一个非常简单的jQuery插件:

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

使用

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

使用你的If语句

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

当然这个插件可以进一步扩展到更加花哨(一次处理多个调用,根据婴儿车创建不存在的元素),但是就目前而言,它做了一个非常简单,非常需要的功能。 ..这个元素存在吗?返回TrueFalse

jsFiddle

答案 5 :(得分:1)

只需使用.each()。

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

...简单

答案 6 :(得分:1)

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

用法:

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