当通过谷歌标签管理器发送时点击不工作的jquery

时间:2015-03-27 12:50:28

标签: javascript jquery google-tag-manager

点击功能上的JQuery在由Google跟踪代码管理器提供时无效。

我已经查看了这些问题,并将我的代码整理成文档并使用了更新的.on(' click',function(){})语法,但它仍然没有。工作。

Why is this jQuery click function not working?

jQuery onclick not firing on dynamically inserted HTML elements?

Google Tag Manager: Eventtracking not working

我尝试在点击功能上添加jquery以将数据发送到Google Analytics。

当有人点击带有一类信息的锚标记时。我使用jquery导航到它的兄弟跨度与一类市场并获得它的文本值。

由于有多个锚标签具有相同的类,我需要具体而且文本值我使用父li标签的属性来查找正确的兄弟范围。

这是HTML

<ul class="prices">
    <li class="message" style="display: none;">
        <div class="ajaxLoader"></div>
        <div class="errorLabel" style="display: none;">There are currently no markets available for your selection.</div>
    </li>

    <li key="MM4.uk.174619476" meetingkey="mm4.uk.meeting.4933626" class="show">
        <a href="#" class="info">Info</a>
        <span class="markets">Manchester City/Crystal Palace</span>
    </li>

    <li class="hide" key="MM4.uk.174619477" meetingkey="mm4.uk.meeting.4933626">
        <a href="#" class="info">Info</a>
        <span class="markets">Crystal Palace/Manchester City (h)</span>
    </li>

    <li key="MM4.uk.174619478" meetingkey="mm4.uk.meeting.4933626" class="show">
        <a href="#" class="info">Info</a>
        <span class="markets">Total Goals</span>
    </li>
    <li key="MM4.uk.174619482" meetingkey="mm4.uk.meeting.4933626" class="show">
        <a href="#" class="info">Info</a>
        <span class="markets">Corners</span>
    </li>

    <li key="MM4.uk.174619485" meetingkey="mm4.uk.meeting.4933626" class="show  last">
        <a href="#" class="info">Info</a>
        <span class="markets">Bookings</span>
    </li>

 </ul>

这是我用来获取范围文本值的代码。

在某些页面上,li标签的属性会因使用三元运算符而改变。

$(function() {
    $(".info").on("click",function(){
        console.log('this runs');
        var key = (($(this).parent().attr("key") != undefined) ? $(this).parent().attr("key") :$(this).parent().attr("meetingkey"));
        console.log(key);
        var text = (($("li[key='" + key + "'] .markets").text() != undefined) ? $("li[key='" + key + "'] .markets").text() : $("li[meetingkey='" + key + "'] a:eq(1)").text());
        console.log(text);
        var logStr = 'Info Button, Meetings page, ' + text;
        console.log(logStr);

    });
});

如果我通过控制台部署它,此代码可以正常工作。但是,当我通过Google跟踪代码管理器将其部署为自定义HTML代码时,即使代码已添加到页面中,它也无法正常工作。

通过GTM传送后显示在页面上的代码

    <script type="text/javascript" id="">
        $(function() {
            $(".info").on("click", function() {
                console.log("this runs");
                var a = void 0 != $(this).parent().attr("key") ? $(this).parent().attr("key") : $(this).parent().attr("meetingkey"),
                    a = void 0 != $("li[key\x3d'" + a + "'] .markets").text() ? $("li[key\x3d'" + a + "'] .markets").text() : $("li[meetingkey\x3d'" + a + "'] a:eq(1)").text();
                console.log("Info Button, Meetings page, " + a);
                ga("send", "event", "Info Button", "Meetings page", a)
            })
        });
    </script>

更新

GTM中的规则在所有页面上都被触发,我已将其更改为事件等于gtm.dom并且GTM调试器声称标记正在被触发。

我在调试器中注意到的一件事是它在关闭脚本标记上做了一些奇怪的语法高亮显示。突出显示/脚本&gt;&#39;在橙色。我无法想到为什么会这样做。

为什么onclick侦听器在通过GTM传递时会失败?

1 个答案:

答案 0 :(得分:1)

通过改变我从

中选择元素的方法,我解决了这个问题
$(".info").on("click",function(){

$("body").on("click", ".info",function(){