协慌网

登录 贡献 社区

jQuery 是否存在 “存在” 功能?

如何在 jQuery 中检查元素的存在?

我当前的代码是这样的:

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

有更优雅的方式来解决这个问题吗?也许是插件或功能?

答案

在 JavaScript 中,一切都是 “真实的” 或 “虚假的”,而数字0 (和 NaN)意味着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)) { }

或者, 从 FAQ

if ( $('#myDiv').length ) { /* Do something */ }

您还可以使用以下内容。如果 jQuery 对象数组中没有值,那么获取数组中的第一个项将返回 undefined。

if ( $('#myDiv')[0] ) { /* Do something */ }