检查元素是否存在。

31

它返回 true 的原因是,无论是否找到元素,都会得到一个 jQuery 对象,而这总被视为 true。 - BoltClock
在发布代码之前,取消缩进难道很困难吗? - user229044
1
可能是重复问题:https://dev59.com/92855IYBdhLWcg3wlVYZ - Richard Marskell - Drackir
我选择了4257906,因为它看起来是最接近的匹配。 - T.J. Crowder
这有点重复(我投了关闭票),但同时,我认为问题更多地是“为什么jQuery对象总是评估为true?”所以也许不应该关闭?意见呢? - karim79
显示剩余3条评论
5个回答

36

检查它的length属性:

if(tr.length) {
    // exists
}

if(tr) 始终为真,因为一个 jQuery 对象,或者说任何 JavaScript 对象都是 truthy 的。


8
我总是在我的JS文件开头添加这个小的jQuery代码片段。
jQuery.fn.exists = function(){return jQuery(this).length>0;}

这里使用了许多人建议的相同方法,但它还允许您像这样访问对象是否存在:

if ( $('#toolbar').exists() ){
    $('#toolbar').load(..., function(){...});
    //etc...
}

3

那是因为tr是一个jQuery对象,在jQuery对象为空时仍然为真。改用if (tr.length),当length不为零时为真,为零时为假。或者选择if (tr[0])


1
怎么样:
if (tr.size() == 0) 

1

试试这个

var tr = $('#parts-table .no-data').parent().length;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接