Loop and remove empty element with jquery -
im close can't quite there.
i want add class display:none div if spans inside empty.
html:
<div class="accordion-content default"> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure1'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure2'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure3'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure4'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure5'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure6'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure7'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure8'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure9'); ?></span></div> <div><span><?php the_field(''); ?></span><span><?php the_field('tenure10'); ?></span></div> <div><span>yearsl</span><span><?php the_field(''); ?></span></div> </div>
jquery
//hide unused fields //iterate on each div $('.accordion-content div').each(function(i, obj) { // if spans contain empty if ($('span:empty').html().length == 0 ) { //do not display parent div $('.accordion-content div').css({'display' : 'none'}); }; });
thanks.
edit: removes divs not ones empty span tags.
there 2 main problems:
$('span:empty')
searches entire document empty span, , callinghtml()
on result accesses html of first match. want within div via$(this).find("span:empty")
.$('.accordion-content div').css({'display' : 'none'});
hides all matching elements.
also, no need call html()
, know it's empty, , jquery has builtin function setting display: none
on elements: hide
.
if want hide div if any span inside empty, then:
$('.accordion-content div:has(span:empty)').hide();
if want hide div if all spans inside empty, then:
$('.accordion-content div').filter(function(i, obj) { return $(this).find('span:parent').length == 0; }).hide();
that hide div if doesn't have spans @ all, completeness, hides ones have spans, empty ones:
$('.accordion-content div:has(span)').filter(function(i, obj) { return $(this).find('span:parent').length == 0; }).hide();
Comments
Post a Comment