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

时间:2011-12-30 18:19:42

标签: javascript jquery anchor liquid shopify

我有一个电子商务网站,每当有人点击“添加到托盘”(我们称之为托盘而不是购物车)时,页面会刷新到同一页面并将其自身定位到该产品的div(尝试它在这里:http://www.boostliquidation.com/)。使用此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 %}' /> 

({%%}中的代码是与Shopify网站一起使用的名为Liquid的语言。)

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

如何在第一次更换现有SKU之后添加产品,以便他们刷新产品而不是回到页面顶部?

1 个答案:

答案 0 :(得分:0)

我可能会尝试使用string.replace()

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;
}

在网址末尾查找任何哈希值,如果找到则替换为1,如果没有,则添加一个哈希值。