2012-04-03 43 views
10

Tôi đang sử dụng câu lệnh if để xác định xem phần tử có con không. Nếu nó KHÔNG có con, tôi chỉ muốn làm cái gì đó cho phần tử đó thôi.jQuery sử dụng 'this' trong câu lệnh if

Dưới đây là tiền đề của những gì tôi đang cố gắng để làm:

if ($("#div a").children().length > 0){ 
    $(this).hide(); 
} 

Vì vậy, nếu một thẻ <a> không có con, tôi muốn làm gì đó để mà yếu tố cụ thể (hoặc nhiều yếu tố mà cũng không có con).

Vấn đề là this chưa được xác định bởi vì đó là tuyên bố if.

Tôi có thể hoàn toàn thiếu một số thứ nhưng tôi không hoàn toàn chắc chắn cách thực hiện việc này. Lời khuyên nào sẽ được đánh giá cao

Trả lời

9

Edit: Added DEMO Liên kết

Bạn có thể sử dụng .filter để kiểm tra tình trạng và gọi .hide về kết quả lọc. Xem bên dưới,

$("#div a").filter(function() { 
    return ($(this).children().length > 0) 
}).hide(); 
+0

Perfect, hoạt động tuyệt vời. Cảm ơn! – scferg5

3

Giải pháp đơn giản là đặt phần tử vào biến.

var elem = $("#div a"); 
if (elem.children().length > 0){ 
    elem.hide(); 
} 
+3

Không chắc chắn câu trả lời của bạn có thực sự hoạt động nếu #div có nhiều thẻ 'a'. http://jsfiddle.net/skram/bxDNq/5/ –

+0

@SKS, Điểm tốt, +1 –

6

bạn có thể sử dụng mỗi để lặp qua các yếu tố

$('input').each(function(){ 
    if ($(this).val()) { 
    $(this).addClass('has-value'); 
    } 
}); 
Các vấn đề liên quan