【问题标题】:If one of two elements exists, do something如果存在两个元素之一,请执行某些操作
【发布时间】:2010-12-26 07:50:33
【问题描述】:

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

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

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

【问题讨论】:

  • 您可能会发现这个question 回答了您的问题。

标签: jquery exists


【解决方案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')
});

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      【解决方案3】:

      只需使用 .each()。

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

      简单...

      【讨论】:

        【解决方案4】:
        if ($(".element1").is('*') || $(".element2").is('*')) {
            // code
        }
        

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

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

        【讨论】:

        • 请注意,您也可以将两个选择器合并为一个,如下所示:$(".element1, .element2")
        • “.is()”和“.length > 0”一样吗?有什么区别(如果有的话)?
        • Nimbuz,关于使用 .is() 的好帖子 - bennadel.com/blog/…
        • 文森特链接到的 SO 问题彻底涵盖了该主题 - 很好阅读。
        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:
          !$.isEmptyObject($.find('#urId'))
          

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

          干杯 :)

          【讨论】:

            【解决方案7】:
            if ( $('#myDiv')[0] ) { //do something }
            

            ..效果最好!

            找到here

            【讨论】:

              猜你喜欢
              • 2016-01-27
              • 1970-01-01
              • 2011-07-08
              • 2018-12-19
              • 2014-11-04
              • 1970-01-01
              • 1970-01-01
              • 2011-12-04
              • 2014-09-23
              相关资源
              最近更新 更多