2011-01-25 45 views
9

Bản sao có thể xảy ra:
Is there an “exists” function for jQuery
jQuery determining if element exists on pageKiểm tra xem yếu tố tồn tại

if(tr) đang trở lại đúng khi tr không phải là một yếu tố, làm thế nào để kiểm tra xem nó là một yếu tố đó tồn tại?

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

Lý do tại sao nó được đánh giá là đúng bởi vì bạn nhận được đối tượng jQuery cho dù nó tìm thấy phần tử hay không, điều này luôn được coi là đúng. – BoltClock

+0

Có khó khăn gì khi bỏ mã của bạn trước khi đăng không? – meagar

+1

Có thể trùng lặp: http://stackoverflow.com/questions/4257906/jquery-determining-if-element-exists-on-page –

Trả lời

31

Kiểm tra tài sản length của nó:

if(tr.length) { 
    // exists 
} 

if(tr) luôn đánh giá đúng bởi vì một đối tượng jQuery, hoặc bất kỳ đối tượng JavaScript cho rằng vấn đề, luôn luôn là truthy.

2

Đó là bởi vì tr là một đối tượng jQuery, đó là sự thật (ngay cả khi đối tượng jQuery trống). Sử dụng if (tr.length) thay vào đó, điều này sẽ đúng khi length không phải là số không, sai khi nó bằng 0. Hoặc luân phiên, if (tr[0]).

0

Làm thế nào về:

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

thử này

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

tôi luôn luôn thêm chút đoạn jQuery này vào đầu file JS của tôi

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

này sử dụng phương pháp tương tự nhiều ở đây đã đề xuất, nhưng nó cũng cho phép bạn truy cập có hay không một đối tượng tồn tại như thế này:

if ($('#toolbar').exists()){ 
    $('#toolbar').load(..., function(){...}); 
    //etc... 
} 
Các vấn đề liên quan