slideToggle和:可见

使用sliderToggle方法时, :visible表达式似乎永远不会返回除true之外的任何内容。

如果我手动使用show / hide:visible expression一起工作就好了。

失败的例子:

 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:

 
  • " alt="" class="nodeExpander" />

我假设slideToggle没有show / hide – 我还能检查一些其他内容吗?

我尝试过使用Firefox 3.5,IE 7,8和Chrome 4 …都具有相同的结果。

谢谢,K

你的第一个(非工作)代码片段将进行测试:visible当slideToggle处于转换中期时:visible更确切地说,它在转换开始后进行测试。无论你是打开还是关闭,中间过渡状态都将是:visible – 所以你总能得到true

在调用slideToggle之前尝试检查.is(":visible")

尝试添加处理程序。

 notes.slideToggle ("fast", function() { var isVisible = notes.is(":visible"); });