2009-12-16 66 views
5

我想寫一個if語句,如果其中一個元素的顯示設置爲「none」,我希望父元素也顯示「none」...jquery - 如何設置父屬性?

這是代碼I'中號嘗試,它不工作...

/* 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> 

回答

8

試試這個:

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> 
+0

嗯...我貼你的代碼完全按照你在這裏,並沒有奏效。我也試過: 如果($(「#prevx」)的CSS ('display')=='none'){ $('#prevxa')。css('display','none'); } } 並且它也沒有工作(?) – n00b0101 2009-12-16 04:29:23

+0

更新了一個新的代碼片段的答案 - 可能想嘗試在'$(document).ready()'塊中包裝'if ... else' 。 – leepowers 2009-12-16 04:44:17

+0

啊,好的,非常感謝! – n00b0101 2009-12-16 04:45:20

0

.attr用於標記,如ID,標題,ALT,SRC等

的.css用於CSS樣式,如顯示,字體,文字修飾:閃爍等。

Pygorex1的解決方案應該做的伎倆。

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

從你的代碼示例中,你已經有了父母的ID,那麼爲什麼不使用它呢?

此外,還有很多其他的方法可以做到這一點(換一個$(document).ready(function(){...})內下方的線),以使他們的工作:

使用:hidden selector(這隻會隱藏):

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

使用一個ternary operator(這將隱藏或顯示父)

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

jQuery使用一些快捷方式:

  • :hidden將找到隱藏的對象(或設置爲顯示:無)。它不一定要在.is()之內。你可以使用這個:$('div:hidden').show()來顯示所有隱藏的div。
  • :visible會發現(顯示=「」,「在線」,「塊」等)
  • $(element).hide()將隱藏的元件(集顯示爲none)
  • $(element).show()將顯示的元素中未隱藏對象(清除顯示值)