문제
사용할 때 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");
});
제휴하지 않습니다 StackOverflow