当前位置:  开发笔记 > 编程语言 > 正文

你如何检查选择器是否匹配jQuery中的内容?

如何解决《你如何检查选择器是否匹配jQuery中的内容?》经验,为你挑选了6个好方法。

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



1> Pat..:

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

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

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

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

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

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

在这里回答


我重写了回复,强调$ .fn.exists较慢.
这是我见过的傻瓜插件之一......
@Josef:如果你对一个名为`exists`的函数的返回值进行数学运算,那么代码设计非常糟糕...恕我直言:)实际上添加了一个单行扩展,比如`exists()`就是2个字符*更长*替换它取代的是JS开始的愚蠢!:)

2> redsquare..:

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

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

}



3> Jon Erickson..:

如果您使用:

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

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

这会更好

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



4> skqr..:

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

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

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

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

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

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

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

干杯.


注意:问题已被更改为意味着他们在发布后的意图,所以这个答案不再有意义:)

5> PhilT..:

另一种方式:

$('#elem').each(function(){
  // do stuff
});


如果#elem不存在,如果你不想做任何特别的事,那就很好,更干净.

6> 小智..:
if ($('#elem')[0]) {
  // do stuff
}

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有