2012-05-04 11 views
10

HTML:Aggiungere contenuto se l'elemento non è vuota

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

risultato che voglio:

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

Il mio codice jQuery:

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

Risultato con il mio codice 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> 

Quindi voglio solo aggiungere un titolo ad ogni div di una certa classe che non è vuota.

+0

Ti interessano i nodi di testo, o solo gli elementi? –

risposta

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

jQuery empty selector

+7

Questo è sexy. – sp00m

+1

Funziona! Non funziona con

\r\n
, ma se si rimuove l'interruzione, funziona – Puyol

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

usa il punto esclamativo per verificare non vuoto 'if (! $ (This) .html())' – Syed

1

Utilizzare la lunghezza per verificare.

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

Questo fallirebbe quando l'elemento '.child' contiene elementi figlio ma nessun testo (ad esempio un elemento' img'). –

+0

@JamesAllardice, Good Point, si prega di consultare l'aggiornamento e rivedere il tuo voto. – Starx

+0

Questo è meglio, ma non ho fatto un downvoting. –

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

Prova questo:

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

O:

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

Oops! okay, potrei semplicemente usare un 'not' per verificare se l'elemento è vuoto o no. '$ (". Child: not (: vuoto) "). Prepend ('

title

');' Correggere la risposta – Vimalnath

Problemi correlati