2009-12-16 6 views
5

요소 중 하나에 "none"으로 설정된 표시가있는 경우 if 문을 쓰려고합니다. 부모 요소가 "none"으로 표시되기를 원합니다 ...jquery - 부모 속성을 설정하는 방법은 무엇입니까?

이것은 코드입니다.

<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'); 
} 
해요 ... 어떤이 작동하지 않는,

/* 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'); 
} 

마크 업을 시도는 다음과 같습니다 아직

더 나은는 :

$('#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') == '없음') { $ ('# prevxa') .css ('display', 'none'); } 그리고 그 중 하나가 작동하지 않았다 (?) – n00b0101

+0

새 코드 스 니펫으로 답변을 업데이트 -'$ (document) .ready()'블록에서'if ... else '를 래핑하려고 할 수 있습니다. . – leepowers

+0

아, 오, 많은 감사합니다! – n00b0101

0

.attr이

.CSS가 사용되는 등 아이디, 제목, 고도, SRC, 등의 태그에 사용됩니다 디스플레이, 글꼴, 텍스트 장식 : 깜박임 등의 CSS 스타일.

Pygorex1의 솔루션은 속임수를 사용해야합니다.

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

코드 예제에서 이미 부모 용 ID가 있으므로 사용하지 않는 이유는 무엇입니까?

:hidden selector (이 의지 만 숨기기) 사용 :

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

사용

또한, 그 작동하려면이 (아래 라인들은 $(document).ready(function(){...}) 내부 포장을) 할 수있는 많은 다른 방법이있다 ternary operator (이 숨기거나 표시됩니다 부모)

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

JQuery와 몇 가지 단축키를 사용

  • :hidden은 숨겨진 (또는 표시 : 없음으로 설정된) 개체를 찾습니다. 그것은 .is() 안에있을 필요도 없습니다. 다음과 같이 $('div:hidden').show()을 사용하면 숨겨진 div를 모두 표시 할 수 있습니다.
  • :visible은 (숨겨지지 않은 객체 요소 (집합 없음으로 표시)
  • $(element).show()가 요소를 표시한다을 숨길
  • $(element).hide() (디스플레이 = '' '인라인', '블록'등)을 찾을 클리어 표시 값)
관련 문제