如何检查jQuery中元素的存在?
我目前的代码是这样的:
if ($(selector).length > 0) {
// Do something
}
有没有更优雅的方法来解决这个问题?也许是插件或功能?
如何检查jQuery中元素的存在?
我目前的代码是这样的:
if ($(selector).length > 0) {
// Do something
}
有没有更优雅的方法来解决这个问题?也许是插件或功能?
在 JavaScript 中,一切都是“真”或“假”,而对于数字,则0
意味着false
其他一切true
。所以你可以写:
if ($(selector).length)
你不需要那>0
部分。
是的!
jQuery.fn.exists = function(){ return this.length > 0; }
if ($(selector).exists()) {
// Do something
}
这是对以下内容的回应:与 Jeff Atwood 的 Herding Code 播客
如果你使用
jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }
你会暗示链接是可能的,而事实并非如此。
这样会更好:
jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }
或者,从常见问题解答:
if ( $('#myDiv').length ) { /* Do something */ }
您还可以使用以下内容。如果 jQuery 对象数组中没有值,则获取数组中的第一项将返回 undefined。
if ( $('#myDiv')[0] ) { /* Do something */ }
你可以使用这个:
// if element exists
if($('selector').length){ /* do something */ }
// if element does not exist
if(!$('selector').length){ /* do something */ }
检查存在的最快和最语义上的自我解释方法实际上是使用 plain JavaScript
:
if (document.getElementById('element_id')) {
// Do something
}
它的编写时间比 jQuery 长度替代方案要长一些,但由于它是原生 JS 方法,因此执行速度更快。
它比编写自己的jQuery
函数更好。出于@snover 所述的原因,该替代方案较慢。但它也会给其他程序员一个印象,即该exists()
函数是 jQuery 固有的。JavaScript
编辑您的代码的其他人会/应该理解,而不会增加知识债务。
注意:请注意element_id
(因为这是普通的 JS,而不是jQuery
)之前缺少“#” 。