如何测试slideToggle后DIV是打开还是关闭
我有一个 Jquery Ui 按钮 (#toggleIcons),单击该按钮时,会切换 div (.icons) 以显示一些图标。我还使用 Jquery Isotope 和 Infinitescroll 动态添加新图像。我想做的是有一种方法可以在添加和更新新图像时保留幻灯片切换状态。 ifinitescroll 有一个回调函数,这样我就可以更新页面和图标的状态。
//My button click function
$("#styleSwitcher #toggleIcons" ).click(function() {
$('.icons').slideToggle('slow');
//for Isotope to update the layout
$('#container').isotope('reLayout')
return false;
});
//code I am working on to put in callback to test if div is open or closed
if($(".icons").is(":hidden"))
{
$('.icons').hide();
}
else
{
$('.icons').show();
}
不工作。任何帮助或指导将不胜感激。谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(8)
你爱我像她 2024-10-28 04:50:52
将检查状态脚本放入函数中 - 让它保留一点..
$('.advance-view').click(function() {
$('#advance-control').slideToggle('slow', function() {
if ($('#advance-control').is(':hidden'))
{
$('.advance-view').css("background-color", "#2B509A");
}
else
{
$('.advance-view').css("background-color", "#4D6837");
}
});
});
北城半夏 2024-10-28 04:50:52
我想我明白你想要什么。通过某些与添加图像无关的按钮,用户可以隐藏和显示图标。添加了新图像,图标“显示”,并且您不知道回调是否应该显示图标,或隐藏它们,以便它们与图库的其余部分匹配。
//My button click function
$("#styleSwitcher #toggleIcons" ).click(function() {
$('.icons').slideToggle('slow');
//for Isotope to update the layout
$('#container').isotope('reLayout').data({iconStateIsHidden:$('.icons').is(":hidden")});
return false;
});
//code I am working on to put in callback to test if div is open or closed
if($("#container").data()[iconStateIsHidden])
{
// newly added images should match the rest of the gallery
$('.icons').hide();
}
else
{
// newly added images should match the rest of the gallery
$('.icons').show();
}
上课铃就是安魂曲 2024-10-28 04:50:52
您可以使用另一种更强大且更短的方法。
您可以向元素添加一个属性,例如“open”。
当您第一次阅读时,它不在那里,因此它假设它是初始位置。
如果它是“0”,那么您将其反转,并在条件块中执行slidedown()或slideup()
这有很多好处:
- 您可以通过浏览器调试器读取该值并查看它的变化
- 最有用的是您可以使用 .each 迭代器读取该值并检查打开的值
function toggleBox(id) {
let o = $("#box_" + id);
let op = o.attr("open") !== undefined;
if (op) {
o.slideUp();
o.removeAttr("open");
} else {
o.slideDown();
o.attr("open","1");
}
}
清浅ˋ旧时光 2024-10-28 04:50:52
SlideToggle 不会立即更改可见性。你需要破解这个
var hidden=$('#targetdiv').is(':visible'); //check the visibility before calling slideToggle
var $('#yourbuttonid').slideToggle(); //toggle it
if(hidden)
{ #put whatever you want to do here when #targetdiv is OPEN!
}
else
{ #content for when #targetdiv is CLOSED
}
希望这个迟了10年的答案对你有用我
从"="">https://forum.jquery.com/topic/state-of-slidetoggle
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
你的情况倒退了:
You have your condition backwards: