如果两个元素中有一个存在,则执行某些操作。

54

我目前这样检查是否存在两个元素中的一个:

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

有没有更好的方式来重写同样的代码?我的意思是,.length.length > 0 是一样的吗?


你可能会发现这个问题回答了你的问题。 - Vincent Ramdhanie
7个回答

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

编辑(来自评论)一次调用中选择具有多个类的元素:

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

3
请注意,您还可以将这两个选择器组合成一个,像这样:$(".element1, .element2") - bcat
5
“.is()”和“.length > 0”一样吗?有什么区别,如果有的话? - eozzy
Nimbuz,关于使用.is()的好文章 - http://www.bennadel.com/blog/1725-jQuery-s-is-Method-Checks-For-Any-Matching-Elements.htm - micahwittman
Vincent提供的SO问题全面涵盖了这个主题 - 值得一读。 - micahwittman

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

在这里找到 这里

..最好的效果!


16

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

如果元素存在,则返回"true",否则返回False。

祝好 :)


1

这里查看最新版本的插件更新!现在使用回调函数,因此您可以选择保持链式可用性。可以完全替换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


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

1
只需使用 .each()。
$(".element1").each(function(){
  //Do Something here
}

简单...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接