jQuery の .on でクリックイベントを取得するメモです。
以下で a 要素のクリックイベントを Google Analytics に記録するという記事を書きましたが、取れていないイベントがある事がわかったため修正してみました。
関連記事
取得できないのは、例えば以下のような javascirpt で追加された要素。
(function($) { $(function() { $("#hoge").append("<a href='https://worklog.be/' title='work.log' target='_blank'>追加した要素</a>"); }); })(jQuery);
これだと思いっきりスルーされます。調べると .click は描画済みの DOM 要素にしか効かないとか何とかで、これじゃあダメだった様子。
代わりに .on を使うと上手くいくという事で、早速いかのように置き換えてみました。
(function ($) { $(document).on("click", "a", function(e) { var href = $(this).attr("href"); var url = href.match(/^https?:\/\/[^/]+/i) + '/'; if (url != null) { var domain = url.replace(/(^https?:\/\/|\/$)/gi, ''); if (domain != location.host && domain != null) { _gaq.push(['_trackEvent', 'Click Count', domain, location.pathname, 1, true]); } } }); })(jQuery);
PC・iPhone でテストしましたが、これで期待通りの動作になりました。
すっごい簡単ですが .on のメモ書きは以上です。