首页 文章

你如何检查选择器是否匹配jQuery中的东西? [重复]

提问于
浏览
415

这个问题在这里已有答案:

在Mootools中,我只是运行 if ($('target')) { ... } . jQuery中 if ($('#target')) { ... } 的工作方式是否相同?

11 回答

  • 679

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

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

    如果你绝对必须有一个exists()函数 - 它会更慢 - 你可以这样做:

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

    然后在您的代码中,您可以使用

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

    正如回答here

  • 1

    不,jquery总是返回一个jquery对象,无论选择器是否匹配 . 你需要使用.length

    if ( $('#someDiv').length ){
    
    }
    
  • -4

    如果您使用:

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

    你会暗示链接是可能的,但事实并非如此 .

    这会更好

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

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

    问题是“如何检查jQuery中是否存在选择器 . ”

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

    jQuery允许您创建自定义选择器,但是在这里看到当您在初始化之前尝试使用e时会发生什么;

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

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

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

    干杯 .

  • 19

    另一种方式:

    $('#elem').each(function(){
      // do stuff
    });
    
  • 3
    if ($('#elem')[0]) {
      // do stuff
    }
    
  • 14

    或者:

    if( jQuery('#elem').get(0) ) {}
    
  • 1

    我更喜欢

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

    这基本上检查这些元素是否是一种“*”(任何元素) . 只是一个更清晰的语法和“是”在“如果”内部更有意义

  • -6
    jQuery.fn.exists = function(selector, callback) {
        var $this = $(this);
        $this.each(function() {
            callback.call(this, ($(this).find(selector).length > 0));
        });
    };
    
  • 81

    对我来说 .exists 不起作用,所以我使用索引:

    if ($("#elem").index() ! = -1) {}
    
  • 13

    首先创建一个函数:

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

    然后

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

相关问题