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"); });