54

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

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

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

4

7 回答 7

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

编辑(每条评论)在一次调用中按多个类选择元素:

if ($(".element1, .element2").is('*')) {
    // code
}
于 2009-12-14T05:41:57.810 回答
25
if ( $('#myDiv')[0] ) { //do something }

..效果最好!

在这里找到。

于 2009-12-14T06:00:33.017 回答
16

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

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

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

于 2011-03-08T12:08:12.980 回答
2
!$.isEmptyObject($.find('#urId'))

如果元素存在,这将返回“true”,如果不存在,则返回 False

干杯:)

于 2013-01-18T13:06:58.523 回答
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

于 2012-11-09T17:13:07.567 回答
1

只需使用 .each()。

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

简单的...

于 2013-09-05T17:11:30.220 回答
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')
});
于 2014-02-21T11:03:23.457 回答