首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在宏中有一个函数,返回Google标记的html类的名称?

如何在宏中有一个函数,返回Google标记的html类的名称?
EN

Stack Overflow用户
提问于 2015-01-02 23:44:09
回答 2查看 226关注 0票数 0

我有一个包含以下内容的网站:

代码语言:javascript
运行
复制
<ul class="top">
 <li class="first menu">...</li>
 <li class="some menu">...</li>
 <li class="another menu">...</li>
 <li class="last menu">...</li>
</ul>

我一直试图用宏(Google标记管理器)编写一个函数,它将返回“另一个菜单”或“第一个菜单”,或者任何取决于单击哪个菜单元素的菜单。我尝试了下面的示例代码,以确保一切都能正常工作:

代码语言:javascript
运行
复制
  function() {
    var now = new Date();
    return now.getTime();
  }

它工作得很好,所以我需要做的就是修改这个函数,直到它完成我想要它做的事情。我在这里尝试过以下类似问题的想法,但它们都导致了未定义的-未定义的(而不是string - 'some ‘):

代码语言:javascript
运行
复制
function() {
        var now= $(this).attr("class");
return now;
}

代码语言:javascript
运行
复制
var gtval = aData[4];
$(gtval).attr('class').split(' ')[0]);

代码语言:javascript
运行
复制
var gtval = aData[4];
$($.trim(gtval)).attr('class').split(' ')[0];

代码语言:javascript
运行
复制
var gtval = aData[4];
var classList = gtval.attr('class').split(/\s+/);
return classList;

代码语言:javascript
运行
复制
return $('selector').attr('class').split(' ')[0]);

代码语言:javascript
运行
复制
return document.getElementsByClassName(names);

这似乎并不是很难实现我想要的,我只是不知道如何去做。谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 22:03:57

谢谢你的回答,但我不能让他们工作。幸运的是,我的同事想出了办法。我在这里贴出她的解决办法,这样别人可能会受益:

代码语言:javascript
运行
复制
function() {
 var $element = $({{element}});
 return $element.closest("li").attr("class");
}
票数 0
EN

Stack Overflow用户

发布于 2015-01-05 08:39:47

我相信您不需要使用jquery来完成这一任务。如果列表中的元素不是很复杂,则可以使用“”标记。如果在容器中添加“clicks”标记,它将捕获所有对网页上任何元素的单击,提供有关它的基本信息(包括element.class宏中的类)。要检查它是否会解决您的问题,只需将“单击侦听器”添加到容器中,进入调试模式,转到您的网页,单击list元素,并检查gtm.click事件上将存储在gtm.click宏中的信息。

如果列表元素中包含一些相当复杂的内容,那么单击事件上的element.class很可能会返回一些愚蠢的东西。要在这种情况下处理问题,确实可以使用jquery,但方式略有不同。不应该在click事件上调用jquery函数,因为GTM不会将单击的元素传递到脚本中。我建议添加一个标签到您的网站,其中包含这样的脚本。

代码语言:javascript
运行
复制
$('li').click(function(){
  dataLayer.push({
    'event' : 'li_class_click' // optional, to be used if you want do 
                               // something specific on moment of click
    'li_class' : $(this).attr('class')
  })
});

使用这样的标记,您将向每个li元素添加一个函数调用。单击后,此函数将在dataLayer中放置所需的类名。您可以进一步将其放置在宏中。此外,如果您想做一些事情作为对单击的响应,您只需要将'event':'li_class_click'添加到dataLayer push中,并将所有的魔力放在仅在li_class_click event上触发的另一个标记中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27750132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档