2012-05-04 26 views
10

HTML:Añadir contenido si el elemento no está vací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> 

resultado que quiero:

<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> 

Mi código jQuery:

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

resultado con mi código jQuery:

<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> 

Así que solo quiero agregar un título a cada div de una determinada clase que no esté vacía.

+0

¿Se preocupa por los nodos de texto, o sólo los elementos? –

Respuesta

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

jQuery empty selector

+7

Este es sexy. – sp00m

+1

Esto funciona! No funciona con

\r\n
, pero si elimina el corte, funciona – Puyol

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

use un signo de exclamación para comprobar que no esté vacío 'if (! $ (This) .html())' – Syed

1

Utilice la longitud para verificar en su lugar.

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

Eso fallaría cuando el elemento '.child' contiene elementos secundarios pero no texto (por ejemplo, un elemento' img'). –

+0

@JamesAllardice, Buen punto, ver la actualización y revisar su voto. – Starx

+0

Eso es mejor, pero no perdonó. –

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

Prueba esto:

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

O:

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

¡Uy! de acuerdo, podría usar un 'no' para verificar si el elemento está vacío o no. '$ (". Child: not (: empty) "). Prepend ('

title

');' Corregido la respuesta – Vimalnath

Cuestiones relacionadas