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 に答える