2009-07-11 5 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

답변

4

코드가 의미가 없습니다. 일치하는 노드의 부모에서 현재 노드와 동일한 ID를 가진 노드를 검색하고 있습니까? ID 고유해야합니다. 대신 또한

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

: 같은 것 숨겨진 항목을 일반적인 형식을 배제로

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

나는 매우 대신 가능하면 클래스를 사용하는 것이 좋습니다 것입니다. CSS 속성 추가 및 제거는 문제가됩니다. 수업은 쉽습니다.

+0

간단한 래퍼 (wrapper)에서 좋은 조언을 많이합니다. 좋습니다. – googletorp

0

당신은

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

(가)와 함께 할 수 있습니다.

도움이 되었기를 바랍니다.

0

그냥 ... 반복 ID가 없어야합니다. 이 코드를 확인하면 코드가 훨씬 빨리 실행됩니다. 이 상황에서 클래스를 사용하는 것이 훨씬 더 합리적입니다.

의 당신 XHTML이 같다고 가정하자 :

당신은 '#의 someElement_3 "(첫 번째 숨겨진 요소)를 선택하기 위해이 작업을 수행 할 것
<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> 

: 나는 기본적으로 믿지

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

을 무엇을