仅显示jQuery Popup一次,仅在起始页面上显示

时间:2014-09-05 09:06:24

标签: jquery cookies set hide show

我已被要求扩展给定代码,使其生成的框只显示每次访问一次。 在阅读之后,这个问题看起来并不复杂,但由于某种原因,代码无法正常工作 - 现在该图层根本没有显示。 由于我对jQuery不太熟悉并且原作者不可用,我希望有人可以帮我推动正确的方向? 出于测试目的,我尝试将cookie设置为在2小时内过期。

<script type="text/javascript">
$.noConflict();
/* Popup on starting page */
<?php
    if($_SERVER["REQUEST_URI"] == "/" || $_SERVER["REQUEST_URI"] == "/index.php") :
?>
jQuery( document ).ready(function() {
    if ($.cookie('test') !='1'){

jQuery("body").append("<div class=\"vbox-shadow\"></div>");
jQuery(".vbox-shadow").fadeIn(function() { 
jQuery("body").append("<div class=\"vbox-layer\"></div>");
jQuery(".vbox-layer").html("<span class=\"vbox-close\">X</span><a href=\"/link/target.html\"><img src=\"/images/popup_image.jpg\" /><br /></a>");
jQuery(".vbox-close").click(function(e) {
jQuery(".vbox-layer").hide(function()  {
jQuery(".vbox-layer").remove();
jQuery(".vbox-close").remove();
jQuery(".vbox-shadow").fadeOut(function() { jQuery(".vbox-shadow").remove(); });
});
});
jQuery(".vbox-shadow").click(function(e) {
jQuery(".vbox-layer").hide(function()  {
jQuery(".vbox-layer").remove();
jQuery(".vbox-close").remove();
jQuery(".vbox-shadow").fadeOut(function() { jQuery(".vbox-shadow").remove(); });
});
});
$.cookie('test', '1', { expires:7200000});
});}
});
<?php
endif;
?>
</script>

2 个答案:

答案 0 :(得分:0)

Cookie也可能已过期。所以在这种情况下$ .cookie('test')将返回undefined,尝试将$ .cookie('test')!='1'更改为if(!$。cookie('test')){

答案 1 :(得分:0)

使用PHP生成的cookie进行管理以使其工作如下:

<script type="text/javascript">
$.noConflict();
/* Popup on starting page */
<?php
if(($_SERVER["REQUEST_URI"] == "/" || $_SERVER["REQUEST_URI"] == "/index.php")&&($_COOKIE['NoPopup']!='true')) :
?>
jQuery( document ).ready(function() {

jQuery("body").append("<div class=\"vbox-shadow\"></div>");
jQuery(".vbox-shadow").fadeIn(function() { 
jQuery("body").append("<div class=\"vbox-layer\"></div>");
jQuery(".vbox-layer").html("<span class=\"vbox-close\">X</span><a href=\"/link/to/page.html\"><img src=\"/images/popup.jpg\" /><br /></a>");
jQuery(".vbox-close").click(function(e) {
jQuery(".vbox-layer").hide(function()  {
jQuery(".vbox-layer").remove();
jQuery(".vbox-close").remove();
jQuery(".vbox-shadow").fadeOut(function() { jQuery(".vbox-shadow").remove(); });
});
});
jQuery(".vbox-shadow").click(function(e) {
jQuery(".vbox-layer").hide(function()  {
jQuery(".vbox-layer").remove();
jQuery(".vbox-close").remove();
jQuery(".vbox-shadow").fadeOut(function() { jQuery(".vbox-shadow").remove(); });
});
});
});
});

<?php
endif;
$value='true';
setcookie("NoPopup", $value, time()+60*60*6);
?>
</script>