0

我正在使用 WordPress 和 Woocommerce,目前我的标题中有一个迷你购物车,因此当用户单击该图标时,它会显示其购物车的内容(无需离开页面)。

jQuery 当前将不透明度设置0为文档准备好后立即设置。我想知道单击添加到购物车按钮时如何打开该迷你购物车?因为单击添加到购物车按钮时页面会刷新,所以我不知道如何将下面的不透明度更改为1仅在触发添加到购物车刷新之后。

这是 jQuery,我把我的尝试注释掉了。

jQuery(document).ready(function($) {

    $('#nw-cart-drop-content').css('opacity',0).addClass('nw-hidden');
    $('#nw-cart-drop-toggle').click(function(e) {
        if($('#nw-cart-drop-content').hasClass('nw-hidden')) {
            $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
        }else {
            $('#nw-cart-drop-content').animate({opacity:0},500);
            $('#nw-cart-drop-content').addClass('nw-hidden');
        }
    });

    /*$('button.lato').click(function(e) {

            jQuery(document).ready(function($) {
                $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
            });

    });*/

});
4

4 回答 4

0

由于您在评论中指出存在 URL 参数,因此您可以检查函数中的参数。只需将以下示例中的硬编码 url ( http://mysite.com/?add-to-cart=13644 ) 替换为“window.location”,现在只要查询字符串提交页面后,购物车就会显示被保留,这表明它是。

这是工作示例:http: //jsfiddle.net/X664G/7/

jQuery(document).ready(function($) {
    //alert(getParameter('http://mysite.com/?added-to-cart=13644','added-to-cart'));
    if (getParameter('http://mysite.com/?added-to-cart=13644','added-to-cart'))
       $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
    else {
         $('#nw-cart-drop-content').animate({opacity:0},500);
         $('#nw-cart-drop-content').addClass('nw-hidden');
    }
    $('#nw-cart-drop-toggle').click(function(e) {
        if($('#nw-cart-drop-content').hasClass('nw-hidden')) {
            $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
        }else {
            $('#nw-cart-drop-content').animate({opacity:0},500);
            $('#nw-cart-drop-content').addClass('nw-hidden');
        }
    });
});
function getParameter(url,param){
    url = url.split('?');
    var pattern = new RegExp(param+'=(.*?)(;|&|$)','gi');
    return url[1].split(pattern)[1];
}
于 2013-10-30T22:20:27.573 回答
0

在对 funcbigO 的方法做了一些研究之后,我想出了这个,它似乎工作正常。感谢所有帮助,希望这有助于其他人浏览。

if(window.location.href.indexOf("?added-to-cart=") > 0) {
       $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
    } else {
        $('#nw-cart-drop-content').css('opacity',0).addClass('nw-hidden');
    }

    $('#nw-cart-drop-toggle').click(function(e) {
        if($('#nw-cart-drop-content').hasClass('nw-hidden')) {
            $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
        }else {
            $('#nw-cart-drop-content').animate({opacity:0},500);
            $('#nw-cart-drop-content').addClass('nw-hidden');
        }
    });
于 2013-10-31T01:52:56.470 回答
0

请尝试下面的代码,我还没有测试过代码!!

jQuery(document).ready(function($) {

    $('#nw-cart-drop-content').css('opacity',0).addClass('nw-hidden');
    $('#nw-cart-drop-toggle').click(function(e) {
        SetCookie('CartAdded','yes',1);
        OpenCart();
    });  
       var isCartAdded = ReadCookie('CartAdded');
       if(CartAdded=='yes'){
           /// use the opacity code here 
       }

 });

     function OpenCart(){
           if($('#nw-cart-drop-content').hasClass('nw-hidden')) {
              $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
         }else {
             $('#nw-cart-drop-content').animate({opacity:0},500);
            $('#nw-cart-drop-content').addClass('nw-hidden');
         }  
     }

    function SetCookie(cookieName,cookieValue,nDays) {
             var today = new Date();
             var expire = new Date();
            if (nDays==null || nDays==0) nDays=1;
             expire.setTime(today.getTime() + 3600000*24*nDays);
             document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString();
      }

      function ReadCookie(cookieName) {
             var theCookie=" "+document.cookie;
             var ind=theCookie.indexOf(" "+cookieName+"=");
             if (ind==-1) ind=theCookie.indexOf(";"+cookieName+"=");
             if (ind==-1 || cookieName=="") return "";
             var ind1=theCookie.indexOf(";",ind+1);
             if (ind1==-1) ind1=theCookie.length; 
          return unescape(theCookie.substring(ind+cookieName.length+2,ind1));
        }
于 2013-10-30T04:15:59.327 回答
0
$('button.lato').click(function(e) {
    $('#nw-cart-drop-content').animate({opacity:1},500).removeClass('nw-hidden');
});

我认为单击处理程序将在刷新之前执行。所以上面的片段应该可以工作。

于 2013-10-30T04:17:40.993 回答