明らかにモーダルがアクティブであるという条件でのみ、いくつかのJavaScriptを実行しようとしています。問題は、モーダルがアクティブかどうかにかかわらず、私が試したメソッドが True であったことです。以下は、私が達成しようとしていることの例です。:is visible メソッドと :active も試しました。私はzurb Revealモーダルを使用しています。
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'))
編集
アクティブ時は「visibility」:「visible」、それ以外は「hidden」のCSSがあるので、以下を試してみたのですが、条件に反応しません。なぜそれが起こるのでしょうか?
if($("#myModal").css("visibility", "hidden").length > 0) {
console.log('is hidden');
} else {
console.log('is shown');
}
これは、表示ポップアップ用のZurb のオプションを含む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'
});
}