2012-07-02 13 views
6

Ho guardato intorno e ho trovato un sacco di domande su questo, ma nessuna delle soluzioni lavoro per me. Ho una struttura come questa:jQuery Hide genitore div div se bambino è vuota

<div class="pricetag"> 
    <div class="price">400</div> 
</div> 

<div class="pricetag"> 
    <div class="price"></div> 
</div> 

<div class="pricetag"> 
    <div class="price">250</div> 
</div> 

Quello che voglio fare è quello di nascondere il .pricetag dove .price non contiene nulla. Può essere molto diverso .pricetag sulla stessa pagina ma voglio solo nascondere quelli con .price. Vuoto.

Questo è possibile con jQuery? Ho provato un sacco di script diversi ma nessuno ha funzionato correttamente.

+0

Will ogni elemento '.pricetag' sempre e solo avere uno' elemento .price'? –

+0

inserisco fr. all'inizio e: - alla fine di ogni .pricetag. Quindi se .price ha contenuto è

fr.
200
: -
. Se .price è vuoto è
fr.
: -
Daniel

+0

Ma non avresti mai '

fr.
200
: -
', giusto? –

risposta

17

È possibile utilizzare il selettore :empty e il metodo parent, assumendo i vuoti .price elementi non potrà mai contenere nodi di testo (ad esempio una nuova linea carattere):

$(".price:empty").parent().hide(); 

Ecco un working example.

+0

Questo l'ha risolto! Grazie mille! Ho provato a usare solo se le istruzioni per verificare se il div è vuoto. Grazie ancora. Io lo segnaliamo come la risposta non appena mi è permesso di farlo :) – Daniel

+0

@DanielLundahl - Di niente, contento di aver potuto aiutare :) –

+0

modo intelligente di farlo. Non ero a conoscenza del selettore ': empty'. Grazie –

1
$('.price').each(function(){ 
    if ($(this).text().length == 0) { 
    $(this).parent().hide() 
    } 
}) 
1

demo funzionantehttp://jsfiddle.net/mm4pX/1/

È possibile utilizzare .is(':empty') per verificare se div è vuota e poi fare div genitore nascosta.

Spero che questo aiuti,

codice

$('.price').each(function() { 
    if $('.price').is(':empty') $(this).parent().hide() 
});​ 
+0

Non è necessario eseguire iterazioni su tutto il '.elementi di prezzo I metodi 'parent' e' nascondi' si applicano a tutti gli elementi nel set abbinato. –

+0

@JamesAllardice Aha thank-you ':)' In realtà stavo leggendo il post sopra, cool, evviva! –

0

Questo codice jQuery farà

$(function(){ 
    $(".price").each(function(){ 
    if($(this).html()=="") 
     $(this).parent(".pricetag").hide(); 
    }); 
}); 

jsbin esempio: http://jsbin.com/ovagus

0

provare questo script jQuery

0.123.
$(document).ready(function(e) 
{ 
    $('div.pricetag').each(function(key, value) 
    { 
     if(!$('div.price', value).html()) $(value).hide(); 
    }); 
}); 
0

Il selettore :empty non seleziona un elemento se contiene spazi bianchi. Se questo è un problema, allora si può tagliare l'elemento da spaziature:

function isEmpty(element){ 
    return !$.trim(element.html()) 
} 

$(".box").each(function() { 
    var box = $(this); 
    var body = box.find(".box-body"); 

    if(isEmpty(body)) { 
    console.log("EMPTY"); 
    box.hide(); 
    } 
}); 

http://codepen.io/DanAndreasson/pen/jWpLgM

Problemi correlati