5

要素の1つで表示が「none」に設定されている場合に親要素にも「none」を表示するifステートメントを作成しようとしています...

これは私が試しているコードですが、機能しません...

/* tried this first */
if($('#prevx a').attr('display') == 'none') {
    $(this).parent().attr('display','none');
}

/* and then this */
if($('#prevxa > a').attr('display') == 'none') {
    $('#prevxa').attr('display','none');
}

マークアップは次のようになります。

<ul>
   <li class="navnext" id="nextxa">
      <a id="nextx" href="#"><img src="/images/next.png"/></a>
   </li>

   <li class="navprev" id="prevxa">
      <a id="prevx" href="#" style="display: none;"><img src="/images/previous.png"/></a>
   </li>
</ul>
4

5 に答える 5

9

これを試して:

if($('#prevx').css('display') == 'none') {
    $('#prevx').parent().css('display','none');
}

さらに良いことに:

$('#prevx').parent().css('display',$('#prevx').css('display'));

この例は私にとってはうまくいきます。親を非表示/表示するには、子の表示をなしとインラインの間で切り替えます。

<ul>
   <li class="navnext" id="nextxa">
      <a id="nextx" href="#"><img src="/images/next.png"/></a>
   </li>

   <li class="navprev" id="prevxa">
      <a id="prevx" href="#" style="display: inline;"><img src="/images/previous.png"/></a>
   </li>
</ul>

<script>
if ($('#prevx').css('display') == 'none') 
    $('#prevx').parent().css('display', 'none');
else
    $('#prevx').parent().css('display', 'list-item');
</script>
于 2009-12-16T04:22:32.300 に答える
0

コード例から、親の ID は既にあるので、それを使用しないのはなぜですか?

また、これを行うには他にも多くの方法があります (以下の行を a で囲みます$(document).ready(function(){...}))。

:hiddenセレクターの使用(非表示のみ):

if ($('#prevx').is(':hidden')) $('#prevxa').hide();

三項演算子を使用します(これにより、親が非表示または表示されます)

var showOrHide = ($('#prevx').is(':hidden')) ? 'none' : '';
$('#prevxa').css('display', showOrHide);

JQuery はいくつかのショートカットを使用します。

  • :hidden非表示 (または表示: なし) に設定されているオブジェクトを検索します。どちらかの中にある必要はありません.is()。これを使用できます:$('div:hidden').show()すべての非表示の div を表示します。
  • :visible非表示でないオブジェクトを検索します (display = ''、'inline'、'block' など)。
  • $(element).hide()要素を非表示にします (表示をなしに設定します)
  • $(element).show()要素を表示します (表示値をクリアします)
于 2009-12-16T06:21:54.590 に答える
0

.attr は、id、title、alt、src などのタグに使用されます。

.css は、display、font、text-decoration:blink などの CSS スタイルに使用されます。

Pygorex1 のソリューションでうまくいくはずです。

于 2009-12-16T04:24:56.040 に答える
0
if($('#prevx a').css('display') === 'none') {
    $(this).parent().css('display','none');
}
于 2009-12-16T04:25:10.597 に答える