2012-03-28 20 views
2

div 'name'が空の場合、div 'email'コンテンツを非表示にする必要があります。私はこれをしました:兄弟の1つが空の場合に要素を非表示にする

$(document).ready(function() { 
    $('.media-contact').each(function() { 
     if ($(this).children('.name').text()===''){ 
     $(this).children('.email').hide(); 
     } 
    } 

}); 

しかし、これは動作しません。このようなメディア連絡先は複数存在し、すべてが名前でdivで値を埋め込まれるわけではないので、静的テキスト "Email"だけが表示され、醜いものになります。私は、各メディア接触をループにしたいと「名前」が空であるかどうかを確認し、それがある場合は、「電子メール」を隠す..助けてください..

<div class="media-contact"> 
     <div class="name"> 
      Bill Bero 
     </div> 
     <div class="title"> 
      Communications and Media Relations Specialist 
     </div> 
     <div class="email"> 
      <a class="rc-link" href='mailto:[email protected]'><span><img src="/sites/dev/style%20library/images/design/icons/icon_email.png" alt=""/><em>EMAIL</em></span></a> 
     </div> 
     <div class="phone"> 
      <span class="baec5a81-e4d6-4674-97f3-e9220f0136c1" style="white-space: nowrap"> 
      219-661-3099, ext. 2 
      </span> 
     </div> 
    </div> 
+1

あなたの完全なコードであるかどうかわかりませんが、 '' text()=== ''の後ろに '' '' 'があるので、それは' .. ' .text()=== ''){' – Ohgodwhy

+0

は、まだ動作していないことを修正しました。 –

答えて

1

はこれを試してみてください:

$('.media-contact').each(function() { 
    if ($.trim($(this).children('.name').text()) === '') { 
     $(this).children('.email').hide(); 
    } 
}​);​ 

存在し、不足している他の1名で、このjsFiddle exampleを参照してください。

+0

ありがとうございました!私はそれが白い空間と関係があることを知っていた.. –

1

空の文字列にテキストを()の比較あやふやですおそらく異なるブラウザーでは異なる動作をするでしょう。 ":empty"をチェックすると、ページのレンダリング方法によっては改行文字付きのテキストノードが残っている可能性があります。

$(document).ready(function() { 
    $('.media-contact').each(function() { 
     if ($(this).children('.name').is(":empty")) { 
     $(this).children('.email').hide(); 
     } 
    } 
}); 
+0

これはどちらも動作しませんでした。.nameの値をトリミングすることで修正できますか? –

+1

あなたはそれを試すことができます... $ .trim($(this).children( '。name')。text())== "" – Dave

0

thisをお試しください:

$(document).ready(function() { 
    $('.media-contact').each(function() { 
     var $this = $(this); 
     if ($this.find(".name").html().trim() == "") { 
      $this.find(".email").hide(); 
     } 
    } 

}); 
0

ここにアイデアがあります。トグルとブール値を使用します。

$(document).ready(function() { 
    $('.media-contact').each(function() { 
     $(this).find('.email') 
      .toggle($.trim($(this).find('.name').text()) !== ''); 
    }); 
}); 
関連する問題