我试图仅在启动模式处于活动状态时运行一些javascript。问题是,无论模态是否有效,我尝试过的方法都是真的。下面是我想要完成的一个例子。我试过:是可见方法,也是:主动。我正在使用zurb揭示模态。
html:
<div id="myModal" class="reveal-modal">
<ul>
<li>some list item</li>
<li>some list item</li>
</ul>
</div> <!--/myModal-->
JS:
<script>
if ($('#myModal:active').length){
console.log('yes'); //always yes even when not revealed
} else {
//do nothing
}
</script>
//also tried if ($('#myModal').hasClass('someClass'))
修改
当活动时有“可见性”的CSS:“可见”,否则“隐藏”所以我尝试了以下内容,但它没有响应条件。有什么想法可能会发生吗?
if($("#myModal").css("visibility", "hidden").length > 0) {
console.log('is hidden');
} else {
console.log('is shown');
}
这是一个带有Zurb's选项的cookie代码,用于显示弹出窗口。
if (document.cookie.indexOf('visited=true') == -1) {
var tenYears = 3600 * 1000 * 24 * 365 * 10; //1000*60*60*24*15;//15days
var expires = new Date((new Date()).valueOf() + tenYears);
document.cookie = "visited=true;expires=" + expires.toUTCString() + ";path=/"; //encodeURIComponent +
// Zurb's popup reveal modal
$('#myModal').reveal({
animation: 'fadeAndPop',
animationspeed: 100,
closeonbackgroundclick: true,
dismissmodalclass: 'close-reveal-modal'
});
}
答案 0 :(得分:5)
似乎this plugin在点击时激活了“开放”课程。所以你应该查看链接:
if($(".modal-link").hasClass('open')) {
//do stuff when modal active
} else {
//do stuff when modal not active
}
更好的是:
if($("#my-Modal").is(":visible")) {
//you get the point
}
答案 1 :(得分:1)
修改强>
我对:active
的回答很好,希望这个更简单的答案可以帮助你解决真正的问题,基本上我如何注册模式在页面上打开,并执行一些基于此的代码?
答案是adopted from an answer on this StackOverflow post,也取自Foundation documentation:
$('#myModal').reveal({
animation: 'fadeAndPop',
animationspeed: 100,
closeonbackgroundclick: true,
dismissmodalclass: 'close-reveal-modal',
opened:function(){
console.log('yes');
// magic
}
});
这个opened
事件只会在...你猜对了......模态被打开,这只是在他们第一次访问时被调用。如果由于某种原因你需要在关闭模态时停止连续动作,只需绑定到closed
:
$('#myModal').reveal({
animation: 'fadeAndPop',
animationspeed: 100,
closeonbackgroundclick: true,
dismissmodalclass: 'close-reveal-modal',
opened:function(){
console.log('yes');
// magic
},
closed:function(){
// witchcraft
}
});
这应该与您所寻找的一致。