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

在 Mootools 中,我只需运行 if ($('target')) { ... }. 。做 if ($('#target')) { ... } 在 jQuery 中也以同样的方式工作吗?

有帮助吗?

解决方案

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

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

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

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

然后在你的代码中你可以使用

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

正如所回答的 这里

其他提示

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

if ( $('#someDiv').length ){

}

如果您使用:

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

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

这样会更好

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

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

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

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

jQuery 允许您创建自定义选择器,但是请参阅此处在初始化 e 之前尝试使用 e 时会发生什么情况;

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

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

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

干杯。

还有另一种方式:

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

或者:

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

我更喜欢

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

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

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

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

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

首先创建一个函数:

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

然后

if($(selector).is_exists()){ ... }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top