2017-04-07 11 views
-1

私は近づいていますが、そこにはあまり行きません。jqueryで空の要素をループして取り除く

クラスの表示を追加したい:その内部のスパンが空の場合は、divにnoneを追加する。

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 over each div 
$('.accordion-content div').each(function(i, obj) { 
// if the spans it contain are empty 
if ($('span:empty').html().length == 0) { 
//do not display the parent div 
$('.accordion-content div').css({'display' : 'none'}); 
    }; 
}); 

感謝。

EDIT:現在、空のスパンタグを持つdivだけでなく、すべてのdivを削除します。

+0

誰がダウンワードし、なぜですか? – JPB

答えて

5

二つの主要な問題があります。

  1. $('span:empty')が空のスパンのために文書全体を検索し、その結果にhtml()を呼び出すと、最初の試合のHTMLにアクセスするには。 内に表示する場合は、$(this).find("span:empty")を使用します。

  2. $('.accordion-content div').css({'display' : 'none'});全て整合素子を隠し。

はまた、html()を呼び出す必要、あなたはそれが空の知らない、とjQueryは、要素にdisplay: noneを設定するための組み込み関数があります:hideを。

あなたはその中どのスパンが空の場合は、その後、div要素を非表示にする場合:

$('.accordion-content div:has(span:empty)').hide(); 

あなたはその中すべてのスパンが空の場合は、その後、div要素を非表示にする場合:

:それはすべてで任意のスパンを持っていない場合は、完全を期すために、これはスパンを持っているものが、唯一の空のものを隠しても、div要素を非表示になります
$('.accordion-content div').filter(function(i, obj) { 
    return $(this).find('span:parent').length == 0; 
}).hide(); 

$('.accordion-content div:has(span)').filter(function(i, obj) { 
    return $(this).find('span:parent').length == 0; 
}).hide(); 
+0

説明をいただきありがとうございました。 – JPB

+0

':parent'の使用のために+ 1を与えます("これは親です "のように) - 私はそれが新しいことの言い訳を使用することすらできません:) –

関連する問題