2012-05-04 21 views
10

HTML:Thêm nội dung nếu phần tử là không có sản phẩm nào

<div id="parent"> 
    <div class="child"></div> 
    <div class="child"><p>Div with content<p></div> 
    <div class="child"><img scr="pic.png" alt="Div with picture" /></div> 
</div> 

Kết quả tôi muốn:

<div id="parent"> 
    <div class="child"></div> 
    <div class="child"><h1>title</h1><p>Div with content<p></div> 
    <div class="child"><h1>title</h1><img scr="pic.png" alt="Div with picture" /></div> 
</div> 

mã jQuery của tôi:

$(".child").each(function() { 
    if ($(this).html != '') 
     $(this).prepend('<h1>title</h1>'); 
}); 

quả với mã jQuery của tôi:

<div id="parent"> 
    <div class="child"><h1>title</h1></div> 
    <div class="child"><h1>title</h1><p>Div with content<p></div> 
    <div class="child"><h1>title</h1><img scr="pic.png" alt="Div with picture" /></div> 
</div> 

Vì vậy, tôi chỉ muốn thêm tiêu đề cho mỗi div của một lớp nhất định không trống.

+0

Bạn có quan tâm đến các nút văn bản, hoặc chỉ các yếu tố? –

Trả lời

18
$(".child:not(:empty)").prepend('<h1>title</h1>'); 

jQuery empty selector

+7

Cái này gợi cảm. – sp00m

+1

Công trình này! Nó không hoạt động với

\r\n
, nhưng nếu bạn loại bỏ ngắt, nó sẽ hoạt động – Puyol

4
$(".child").each(function() { 
    if ($(this).html()) 
     $(this).prepend('<h1>title</h1>'); 
}); 
+0

sử dụng dấu chấm than để kiểm tra không trống 'if (! $ (This) .html())' – Syed

1

Sử dụng độ dài để kiểm tra thay thế.

$(".child").each(function() { 
    if ($(this).html().length) 
     $(this).prepend('<h1>title</h1>'); 
}); 
+2

Điều đó sẽ thất bại khi phần tử '.ild' chứa phần tử con nhưng không có văn bản (ví dụ: phần tử' img'). –

+0

@JamesAllardice, Good Point, Vui lòng xem cập nhật và xem lại phiếu bầu của bạn. – Starx

+0

Đó là tốt hơn, nhưng tôi đã không downvote. –

4
$("#parent .child").each(function() { 
    if ($.trim($(this).html()).length > 0) 
     $(this).prepend('<h1>title</h1>'); 
}); 
0

Hãy thử điều này:

$(".child:not(:empty)").prepend('<h1>title</h1>'); 

OR:

$("#parent .child").each(function() { 
    if ($(this).html()) 
     $(this).prepend('<h1>title</h1>'); 
}); 
+0

Rất tiếc! được rồi, chỉ có thể sử dụng 'not' để kiểm tra xem phần tử có trống hay không. '$ (". Con: không (: trống) "). Prepend ('

tiêu đề

'); ' Đã sửa câu trả lời – Vimalnath

Các vấn đề liên quan