0

我正在尝试获取被点击的文本。我有一个案例,在同一个类下定义了两个不同的链接,我需要确定哪些链接被点击

<div class="block pdp-estimate-quote">
  <ul>
    <li>
        <a href="#">Estimate Payment</a>
    </li>
    <li>
        <a href="#">Get a Quote</a>
    </li>
  </ul>
</div>

当有人使用链接文本作为描述单击任一链接时,我想抛出一个 GA 事件。以下代码引发了一个事件,但它显示了两个链接的文本,而不仅仅是单击的那个。

$('.pdp-estimate-quote a').click(function(){ 
    var ctatext = $(this).closest(".pdp-estimate-quote").find('a').text();
    dataLayer.push({ 'event':'event', 'eventCategory': 'Get Quote', 'eventAction':ctatext, 'eventLabel':{{url path}}  }) 
});
4

3 回答 3

5

我可能在你的问题上遗漏了一些东西,但为了获得当前元素的文本,你只需要做

var ctatext = $(this).text();

所以完整的功能是

$('.pdp-estimate-quote a').click(function(){ 
    var ctatext = $(this).text();
    dataLayer.push({ 'event':'event', 'eventCategory': 'Get Quote', 'eventAction':ctatext, 'eventLabel':{{url path}}  }) 
});
于 2013-08-13T20:10:01.690 回答
3

因为您正在查看父元素而不是单击的元素。

var ctatext = $(this).closest(".pdp-estimate-quote").find('a').text();

应该

var ctatext = $(this).text();
于 2013-08-13T20:10:13.880 回答
1

在事件处理程序中,this指的是触发事件的元素。所以在点击处理程序中,this是被点击的 DOM 元素。

var ctatext = $(this).text();
于 2013-08-13T20:10:58.343 回答