0

我正在修改一个使用 jQuery 1.5.1 的应用程序,不幸的是,将 jQuery 库更新到该应用程序中的最新版本不是一个选项。我有这个脚本,它基本上将“onlick”属性插入标签。

 $(document).ready(function () {
    var $hyperlinkSelectors = $('a[href$=".pdf"], a[href$=".doc"], a[href$=".docx"], a[href$=".xls"]');

    $hyperlinkSelectors.each(function () {
        var fileExtention = '.' + $(this).attr('href').split('.').pop();
        $(this).attr('onclick', "_gaq.push(['_trackEvent','" + $(this).text() + fileExtention + "','click']);");
    });
});

但我遇到的问题是 jQuery 1.5.1 无法理解或使用 .attr() 函数。我试过 .prop() 但也没有运气。

今天的 .attr() 在 jQuery 1.5.1 中有什么替代品?

4

2 回答 2

2

在使用.attr('onclick'). DOM 将被更改,但不会运行该事件。

请尝试.click

$hyperlinkSelectors.each(function () {
    var fileExtension = '.' + $(this).attr('href').split('.').pop();
    $(this).click(function(e) {
       _gaq.push(['_trackEvent', $(this).text()+fileExtension, 'click']);
    });
});
于 2013-10-31T16:54:43.697 回答
0

我会尝试将其简化为如下所示:

$(document).ready(function() {
    $('a[href$=".pdf"], a[href$=".doc"], a[href$=".docx"], a[href$=".xls"]').click(function() {
        var $link = $(this);
        var ext = '.' + $link.attr('href').split('.').pop();
        _gaq.push(['_trackEvent', $link.text() + ext, 'click']);
    });
});

请注意,也不需要使用$().each()这种方法,因为它.click()会为您隐式迭代集合。

于 2013-10-31T16:56:00.210 回答