문제

사용할 때 sliderToggle 방법, :visible 표현은 결코 진실 이외의 것을 반환하지 않는 것 같습니다.

수동으로 사용하는 경우 show/ hide 함께 :visible 표현은 잘 작동합니다.

의 예 실패:

jQuery(".fileNode .nodeExpander").click(function() {
    var notes = jQuery(this).parent().siblings(".fileNotes");
    notes.slideToggle ("fast");

    var isVisible = notes.is(":visible"); // Always returns true...

    // Do stuff based on visibility...
});

의 예 일하고 있는:

jQuery(".fileNode .nodeExpander").click(function() {
    var notes = jQuery(this).parent().siblings(".fileNotes");
    var isVisible = notes.is(":visible");

    if (isVisible)
        notes.hide("fast");
    else
        notes.show("fast");

    // Do stuff based on visibility...
});

일부 HTML :

<ul>
    <li class="fileNode">
        <img src="<%= Url.Content ("~/Images/Collapse.png") %>" alt="<%= UIResources.CollpaseAltText %>" class="nodeExpander" />
    </li>
    <li class="fileLink">
        <%= Html.ActionLink (file.Name, "Details", new { id = file.FileId }) %>
    </li>
    <li class="fileNotes">
        <%= file.Description %>
    </li>
</ul>

나는 그것을 가정합니다 slideToggle 하지 않습니다 show/ hide - 내가 확인할 수있는 다른 것이 있습니까?

Firefox 3.5, IE 7, 8 및 Chrome 4에서 모두 동일한 결과를 얻었습니다.

감사합니다, k

도움이 되었습니까?

해결책

첫 번째 (비 작업) 코드 조각은 테스트합니다. :visible SlideToggle은 중간 전환이지만 (보다 정확하게는 전환이 시작된 직후에 테스트합니다.) 열거 나 닫는지 여부에 관계없이 중간 전송 상태는 다음과 같습니다. :visible - 그래서 당신은 항상 얻습니다 true.

확인해보십시오 .is(":visible") 전화하기 전에 slideToggle

다른 팁

핸들러를 추가 해보세요.

notes.slideToggle ("fast", function() { 
  var isVisible = notes.is(":visible");
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top