Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript在每次单击时刷新锚定标记_Javascript_Jquery_Anchor_Liquid_Shopify - Fatal编程技术网

使用Javascript在每次单击时刷新锚定标记

使用Javascript在每次单击时刷新锚定标记,javascript,jquery,anchor,liquid,shopify,Javascript,Jquery,Anchor,Liquid,Shopify,我有一个电子商务网站,每当有人点击添加到托盘,我们称之为托盘而不是购物车,页面将刷新到同一页面,并将其自身定位到该产品的div,请在此处试用:。这是使用以下Javascript实现的: $('input.returnLink').each(function(){ $(this).attr('value',window.location.href + $(this).attr('data-skuhash')); }); 以及该锚定标记,该锚定标记位于“添加到购物车”按钮之

我有一个电子商务网站,每当有人点击添加到托盘,我们称之为托盘而不是购物车,页面将刷新到同一页面,并将其自身定位到该产品的div,请在此处试用:。这是使用以下Javascript实现的:

 $('input.returnLink').each(function(){
     $(this).attr('value',window.location.href + $(this).attr('data-skuhash'));
     }); 
以及该锚定标记,该锚定标记位于“添加到购物车”按钮之前的隐藏输入标记中:

<input type="hidden" value="back" name="return_to" class='returnLink' data-skuhash='#{%     for variant in product.variants %}{{variant.sku}}{% endfor %}' /> 
{%%}中的代码是一种称为Liquid的语言,用于Shopify网站

这个很好用。。。但仅限于第一个产品。它在地址栏中添加以a开头的SKU编号。如果用户添加了其他产品,它将刷新到页面顶部,因为它会将SKU编号修改为地址栏中已显示的现有SKU编号


如何在第一次添加产品后添加产品,以使用自己的SKU替换现有SKU,使其刷新回产品而不是页面顶部

我可能会尝试使用string.replace


查找url末尾的任何哈希值,如果找到则替换,如果找不到则添加一个。

不要使用$this.attrvalue,而应该尝试使用$this.vala valueI。我正在使用jGrowl在右上角弹出一条消息,让他们知道有东西添加到购物车中。这已经不起作用了。代码如下:ifwindow.location.hash.length>0{var prodName=window.location.hash.replace,;$'.productmsg.html'Item已添加到您的工作台。;$.jGrowl'Item已添加到您的工作台。;}这很奇怪,我查看了该网站,不明白为什么它会破坏jGrowl通知。我知道这是一个完全不同的建议,但是您是否尝试过使用AJAX调用以使页面不刷新?这样,用户将始终看到他们刚刚看到的内容。您可以在AJAX方法成功后调用jGrowl通知
var str = window.location.href;
var hash = $(this).attr('data-skuhash');

if (str.match('#\w\w+'){
   str.replace('#\w\w+', hash);
} else {
    str = str + hash;
}