jquery在通过谷歌标签管理器交付时点击不工作

jquery on click not working when delivered via google tag manager

本文关键字:工作 交付 管理器 谷歌 标签 jquery      更新时间:2023-09-26

JQuery点击功能在谷歌标签管理器交付时不起作用。

我已经研究了这些问题,并将我的代码封装在一个准备好的文档中,并使用了更新的.on('click',function(){})语法,但它仍然不起作用。

为什么这个jQuery点击功能不起作用?

jQuery onclick没有启动动态插入的HTML元素?

谷歌标签管理器:事件跟踪不工作

我正在尝试添加一个点击查询功能,将数据发送到谷歌分析。

当有人点击带有一类信息的锚标签时。我使用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);
    });
});

如果我通过控制台部署此代码,则此代码运行良好。然而,当我通过谷歌标签管理器将其部署为自定义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中的规则在所有页面上都被激发,我已经将其更改为event equals GTM.dom,GTM调试器声称标记正在被激发。

我在调试器中注意到的一件事是,它在结束脚本标记上进行了一些奇怪的语法高亮显示。橙色突出显示/script>'。我想不出为什么会那样。

为什么onclick监听器在通过GTM交付时会失败?

我通过改变从中选择元素的方法来解决这个问题

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

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