2009-12-16 41 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()将显示的元素中未隐藏对象(清除显示值)