代码之家  ›  专栏  ›  技术社区  ›  One Crayon

如何检查选择器是否匹配jquery中的某个内容?[复制品]

  •  422
  • One Crayon  · 技术社区  · 17 年前

    这个问题已经有了答案:

    在Mootools,我只会跑 if ($('target')) { ... } . 做 if ($('#target')) { ... } 在jquery中的工作方式相同?

    11 回复  |  直到 12 年前
        1
  •  687
  •   Community Mohan Dere    9 年前

    正如其他评论者所建议的,最有效的方法似乎是:

    if ($(selector).length ) {
        // Do something
    }
    

    如果您必须具有exists()函数(速度会变慢),则可以执行以下操作:

    jQuery.fn.exists = function(){return this.length>0;}
    

    然后在代码中可以使用

    if ($(selector).exists()) {
        // Do something
    }
    

    正如回答 here

        2
  •  82
  •   redsquare    17 年前

    不,jquery总是返回jquery对象,不管选择器是否匹配。 你需要使用。长度

    if ( $('#someDiv').length ){
    
    }
    
        3
  •  19
  •   Jon Erickson    17 年前

    如果您使用:

    jQuery.fn.exists = function(){return ($(this).length > 0);}
    if ($(selector).exists()) { }
    

    您可能会暗示,如果不可能,则可以使用链。

    这样会更好

    jQuery.exists = function(selector) {return ($(selector).length > 0);}
    if ($.exists(selector)) { }
    
        4
  •  15
  •   skqr    14 年前

    我想大多数在这里回复的人都不太明白这个问题,否则我可能会弄错。

    问题是“如何检查 选择器 jquery中存在。“

    大多数人认为这是“如何使用jquery检查DOM中是否存在元素”,几乎不可互换。

    jquery允许您创建自定义选择器,但请在这里查看在初始化e之前尝试在e上使用时会发生什么情况;

    $(':YEAH');
    "Syntax error, unrecognized expression: YEAH"
    

    在遇到这个问题后,我意识到这只是一个简单的检查问题。

    if ($.expr[':']['YEAH']) {
        // Query for your :YEAH selector with ease of mind.
    }
    

    干杯。

        5
  •  14
  •   PhilT    16 年前

    另一种方式:

    $('#elem').each(function(){
      // do stuff
    });
    
        6
  •  13
  •   Grzegorz Rożniecki    14 年前
    if ($('#elem')[0]) {
      // do stuff
    }
    
        7
  •  3
  •   James    17 年前

    可选地:

    if( jQuery('#elem').get(0) ) {}
    
        8
  •  1
  •   user1134422    14 年前

    我更喜欢

        if (jQuery("#anyElement").is("*")){...}
    

    它基本上检查这个元素是否是一种“*”(任何元素)。 只是一个更清晰的语法,“is”在“if”中更有意义

        9
  •  1
  •   Taryn Frank Pearson    12 年前
    jQuery.fn.exists = function(selector, callback) {
        var $this = $(this);
        $this.each(function() {
            callback.call(this, ($(this).find(selector).length > 0));
        });
    };
    
        10
  •  -4
  •   Aliaksei Kliuchnikau poncius    14 年前

    为了我 .exists 不起作用,所以我使用索引:

    if ($("#elem").index() ! = -1) {}
    
        11
  •  -5
  •   Zsolt Takács    13 年前

    首先创建一个函数:

    $.fn.is_exists = function(){ return document.getElementById(selector) }
    

    然后

    if($(selector).is_exists()){ ... }