如何通过Jquery使onclick事件起作用

丹尼尔·马克西姆金(Daniil Maksimkin)

我们的shopify商店遇到了一些麻烦:并且我们想尝试手动将_ga paramteter发送到checkout.shopify.com。我有经验,可以通过在onclick上添加以下代码行来解决此问题:

$html += "<a href=\"/checkout\" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\" class=\"btn btn-1 btn-block big\">{{ 'general.cart_info.checkout' | t }}</a>"; 

但是,使用此网站无法正常工作。这是现在的样子:

 jQuery('<div class="action"><button class="btn btn-default" onclick="window.location=\'/checkout\'">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);

这就是我想要做的:

 jQuery('<div class="action"><a href="/checkout\" id="checkout-link" class="btn btn-default" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);

我也试图做到这一点:

$(document).ready(function() {

    $("a#checkout-link").each(function() {
        var text = $(this).text();
        var thisEvent = $(this).attr("onclick"); // grab the original onclick event
        $(this).click(function(event) { //  when someone clicks these links
            event.preventDefault(); //  don't open the link yet
            ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); 
            document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); 
            document.getElementById('cartform').submit();
            setTimeout(function() { // now wait 300 milliseconds...
                eval(thisEvent); // ... and continue with the onclick event
            },300);
        });
    });

});

用所有这些方法都行不通。我知道我在代码方面不是菜鸟,但也许有人可以帮我吗?

马图斯

那么,您是否要在重定向页面之前执行该ga函数?如果是这样,请尝试创建一个简单的函数来完成您要执行的操作:

function saveLinkerParam(){
 ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); 
}

然后在已经存在的onclick处理程序中执行它(只是在window.location之前进行了更改:

jQuery('<div class="action"><button class="btn btn-default" onclick="saveLinkerParam();window.location=\'/checkout\' + ">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);

(您不必创建新的函数saveLinkerParam,但我认为它使代码更具可读性)

我还没有尝试实际执行此代码,因此,如果遇到任何语法错误,请告诉我。顺便说一句,我认为您尝试的代码的问题可能是语法,更确切地说是在jQuery函数中连接文本和变量时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章