2011-01-25 122 views
9

可能重复:
Is there an “exists” function for jQuery
jQuery determining if element exists on page检查元素存在

if(tr)时TR不是一个元素返回true,我如何检查它是否存在一个元素?

var tr = $('#parts-table .no-data').parent(); 
$('.delete', row).bind('click', function (e) { 
    that.delete(e.currentTarget); 
}); 
console.log(tr); 
if (tr) //returns true when it shouldn't 
+0

它评估为true的原因是因为您得到一个jQuery对象,无论它是否找到元素,它总是被视为真实的。 – BoltClock 2011-01-25 16:16:13

回答

31

检查其length属性:

if(tr.length) { 
    // exists 
} 

if(tr)结果始终为true,因为一个jQuery对象,或任何 JavaScript对象对于这个问题,始终是truthy。

2

这是因为tr是一个jQuery对象,它是truthy(即使jQuery对象为空)。改为使用if (tr.length),当length不为零时为true,当为零时为false。或者,交替地,if (tr[0])

0

如何:

if (tr.size() == 0) 
0

试试这个

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

我总是在我的JS文件的开头添加这一点jQuery的片段

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

中采用相同的办法很多这里有建议,但是它也允许你访问是否存在这样的对象:

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