0

我的功能:

    $('a[href$=".pdf"]').each(function () {
        var $linkText = $(this).text();
        $(this).attr('onclick', "_gaq.push(['_trackEvent','" + $linkText + "','click']);");
    });

    $('a[href$=".doc"]').each(function () {
        var $linkText = $(this).text();
        $(this).attr('onclick', "_gaq.push(['_trackEvent','" + $linkText + "','click']);");
    });

这些部分是重复的:

var $linkText = $(this).text();
        $(this).attr('onclick', "_gaq.push(['_trackEvent','" + $linkText + "','click']);");

我怎样才能把这些部分拉到一个外部函数中,这样我就会有这样的东西?:

$('a[href$=".xls"]').each(function (index, value) {            
        AddGoogleTracking(value);
    });

function AddGoogleTracking(value) {
    var $linkText = value.text();
    $(this).attr('onclick', "_gaq.push(['_trackEvent','" + $linkText + "','click']);");
}
4

2 回答 2

4

您可以同时选择两者:

$('a[href$=".pdf"], a[href$=".doc"]');

您还可以通过直接添加点击处理程序来简化,如下所示:

$('a[href$=".pdf"], a[href$=".doc"]').click(function() {
    _gaq.push(['_trackEvent', $(this).text(), 'click']);
});

通过为您想要跟踪的任何链接提供一个通用类来进一步简化可能是一个好主意,因此您可以这样选择它们:

$('.track-link').click(...);
于 2013-10-30T18:11:36.793 回答
0

不要添加[onclick]属性,当相同的函数体适用于两者时不要重复选择器。

使用将事件.on()绑定click到匹配的元素:

$('a[href$=".pdf"], a[href$=".doc"]').on('click', function () {
    window._gaq.push(['_trackEvent', $(this).text(), 'click']);
});
于 2013-10-30T18:13:02.197 回答