在 Mootools 中,我只会运行if ($('target')) { ... }
. if ($('#target')) { ... }
在 jQuery 中是否以相同的方式工作?
你如何检查选择器是否与 jQuery 中的某些内容匹配?
IT技术
javascript
jquery
jquery-selectors
2021-02-03 20:12:19
6个回答
正如其他评论者所建议的,最有效的方法似乎是:
if ($(selector).length ) {
// Do something
}
如果你绝对必须有一个exists()函数——这会更慢——你可以这样做:
jQuery.fn.exists = function(){return this.length>0;}
然后在你的代码中你可以使用
if ($(selector).exists()) {
// Do something
}
正如回答here
不,无论选择器是否匹配,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 允许您创建自定义选择器,但请查看在初始化之前尝试使用 on e 时会发生什么;
$(':YEAH');
"Syntax error, unrecognized expression: YEAH"
遇到这个后,我意识到这只是检查的问题
if ($.expr[':']['YEAH']) {
// Query for your :YEAH selector with ease of mind.
}
干杯。
还有一种方式:
$('#elem').each(function(){
// do stuff
});