Cuando se usa el método sliderToggle
, la expresión :visible
nunca parece devolver nada que no sea verdadero.slideToggle y: visible
Si utilizo manualmente show
/ junto con la expresión :visible
funcionará bien.
Ejemplo de fracaso:
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...
});
Ejemplo de trabajo :
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...
});
algo de 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>
Estoy asumiendo que el slideToggle
no lo hace hacer a show
/hide
- ¿hay algo más que pueda verificar?
Lo he probado en Firefox 3.5, IE 7, 8 y Chrome 4 ... todo con los mismos resultados.
Gracias, K
¡Por supuesto! Gracias, siéntete como un muppet ahora - llamando var isVisible =! Notes.is (": visible"); antes del slideToggle obtengo la respuesta requerida. ¡Gracias! – Kieron
Es un poco contra-intuitivo, pero tiene mucho sentido. Si solo tenemos un estado de deslizamiento interno para el objeto jQuery ... –