Podczas korzystania z metody sliderToggle
, wyrażenie :visible
wydaje się nigdy nie zwracać niczego poza prawdą.slideToggle and: visible
Jeśli ręcznie użyję show
/hide
w połączeniu z wyrażeniem :visible
, to będzie działało dobrze.
Przykład awaria:
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...
});
Przykład pracy:
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...
});
Some 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>
jestem przy założeniu, że nie slideToggle
robić a show
/ - czy jest coś jeszcze, co mogę sprawdzić?
Próbowałem już w Firefox 3.5, IE 7, 8 i Chrome 4 ... wszystkie z tymi samymi wynikami.
Dzięki, K
Oczywiście! Dzięki, poczuj się teraz jak muppet - przez wywołanie var isVisible =! Notes.is (": visible"); przed slideToggle otrzymuję wymaganą odpowiedź. Dziękuję Ci! – Kieron
Jest to trochę sprzeczne z intuicją, ale ma sens. Jeśli mamy tylko wewnętrzny status slide-up dla obiektu jQuery ... –