2009-07-11 89 views
2

ummm,可能是一个简单的...下面的代码只适用于可见(show())元素我如何得到它选择第一个隐藏的元素呢?隐藏在选择寻找被隐藏物品:jquery隐藏父项

jQuery的

$(".postSelectedRules").each(function() { 
    $(this).parents("#idruleB-"+$(this).attr("id").substr(8)+":hidden:first").css('background', '#bbbbbb'); 
}); 

的Html

<a id="idruleA-1" class="postSelectedRules" href="#">1</a> 
<div class="postStuff"> 
    <div class="postRules"> 
     <span id="idruleB-1" class="postRulesSelect">1</span> 
     <span id="idruleB-2" class="postRulesSelect">2</span> 
    </div> 
</div> 
+0

刚刚添加了相关的html代码并更新了jquery,我认为我在做一些愚蠢的事情,因为这仍然不起作用请注意,当页面第一次加载类“post东西“是隐藏的。 – EddyR 2009-07-12 06:40:09

回答

4

您的代码没有多大意义。您是否正在搜索与当前节点具有相同ID的节点的匹配节点的父节点? ID 应该是的唯一。

至于排除隐藏物品的一般形式是这样的:

$(this).parents(":someClass:visible:first").addClass("blah"); 

,而不是另外:

css('background', '#bbbbbb'); 

我倒是强烈建议使用类,而不是如果可能的话。添加和删​​除CSS属性是有问题的。课程很简单。

+0

在这里简单的包装很多好建议。说得好。 – googletorp 2009-07-11 21:56:13

0

您可以

$(".postSelectedRules:hidden").each(function() { 
    $(this).parents("#"+$(this).attr("id")).css('background', '#bbbbbb'); 
}); 

的做到这一点。

我希望有帮助。

0

只是FYI ...你永远不应该有重复的ID。如果你确定这一点,你会发现你的代码运行得更快。在这种情况下使用Class会更有意义。

让我们假设你XHTML是这样的:

<div class="someClass" style="display:block;" id="someElement_1"> 
    <div class="postSelectedRules"></div> 
</div> 
<div class="someClass" style="display:none;" id="someElement_2"> 
    <div class="postSelectedRules"></div> 
</div> 
<div class="someClass" style="display:none;" id="someElement_3"> 
    <div class="postSelectedRules"></div> 
</div> 

你会做这个选择“#someElement_3" (第一隐藏的元素):

$('.someClass:hidden:first').css({backgroundColor:'#bbb'}); 

我认为这基本上是你