2009-07-11 74 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'}); 

我認爲這基本上是你