当使用sliderToggle方法时,可见表达式似乎没有返回除true之外的任何东西.
如果我手动使用show / hide结合:可见表达式,它将工作正常.
故障示例:
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没有显示/隐藏 – 有没有其他可以检查?
我在Firefox 3.5,IE 7,8和Chrome 4 …中尝试过相同的结果.
谢谢,
ķ
解决方法
您的第一个(非工作)代码片段将进行测试:slidetoggle是中间转换期间可见(更准确地说,它在转换开始后进行测试).无论是打开还是关闭,中间转换状态将会是:可见 – 所以你总是得到真实的.
在调用slidetoggle之前尝试检查.is(“:visible”)