2011-01-25 4 views
9

Возможные Дубликаты:
Is there an “exists” function for jQuery
jQuery determining if element exists on pageПроверьте элемент существует

if(tr) возвращается верно, когда тр не является элементом, как я могу проверить, является ли это элемент, который существует?

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

+0

Было ли так сложно отменить ваш код, прежде чем публиковать его? – meagar

+1

Возможный дубликат: http://stackoverflow.com/questions/4257906/jquery-determining-if-element-exists-on-page –

ответ

31

Проверьте свою собственность length:

if(tr.length) { 
    // exists 
} 

if(tr) всегда истинен, потому что объект JQuery или любой JavaScript Object по этому вопросу, всегда truthy.

2

Это потому, что tr - объект jQuery, который является правдивым (даже если объект jQuery пуст). Вместо этого используйте if (tr.length), что будет верно, если length не равен нулю, если он равен нулю. Или поочередно, if (tr[0]).

0

Как насчет:

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

попробовать это

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

Я всегда добавить немного JQuery фрагмент кода в начале моих файлов JS

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

Это использует тот же подход, многие здесь предложили, но он также позволяет вам получить доступ к тому, существует или нет объект:

if ($('#toolbar').exists()){ 
    $('#toolbar').load(..., function(){...}); 
    //etc... 
} 
Смежные вопросы