SlideToggle 和 :visible
使用 sliderToggle
方法时,:visible
表达式似乎永远不会返回除 true 之外的任何内容。
如果我手动将 show
/ hide
与 :visible
表达式结合使用,它会工作得很好。
失败示例:
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
不执行显示/
hide
- 还有什么我可以检查的吗?
我已经在 Firefox 3.5、IE 7、8 和 Chrome 4 中尝试过......都得到了相同的结果。
谢谢, K
When using the sliderToggle
method, the :visible
expression never seems to return anything other than true.
If I manually use show
/ hide
in conjunction with :visible
expression it'll work just fine.
Example of failure:
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...
});
Example of working:
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>
I'm assuming that the slideToggle
doesn't do a show
/ hide
- is there something else I can check?
I've tried in Firefox 3.5, IE 7, 8 and Chrome 4...all with the same results.
Thanks,
K
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的第一个(非工作)代码片段将在 slipToggle 处于过渡中时测试
:visible
(更准确地说,它在过渡开始后立即对其进行测试。)无论您是打开还是关闭,中间转换状态将为:visible
- 所以你总是得到true
。在调用
slideToggle
之前尝试检查.is(":visible")
Your first (non-working) code fragment will be testing
:visible
while slideToggle is mid-transition (more precisely, it tests it just after the transition starts.) Regardless of whether you're opening or closing, the mid-transition state will be:visible
- so you always gettrue
.Try checking
.is(":visible")
before callingslideToggle
尝试添加一个处理程序。
Try adding a handler.