При использовании метода sliderToggle
выражение :visible
никогда не возвращает ничего, кроме true.slideToggle и: 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
не делать a show
/hide
- есть ли что-то еще, что я могу проверить?
Я пробовал в Firefox 3.5, IE 7, 8 и Chrome 4 ... все с одинаковыми результатами.
Спасибо, K
Конечно! Спасибо, теперь чувствуем себя как muppet - вызывая var isVisible =! Notes.is («: visible»); перед движением slideToggle я получаю ответ. Спасибо! – Kieron
Это немного противоречиво, но имеет смысл. Если только у нас есть внутренний слайд-статус для объекта jQuery ... –