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() を試しましたが、運もありません。

jQuery 1.5.1 で現在の .attr() に代わるものは何ですか?

4

2 に答える 2

2

を使用して DOM が読み込まれた後は、イベント ハンドラーをアタッチできません.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 に答える