外部リンクを別窓で開く JavaScript を改善した

jQuery の delegate/live というものを今更ながら知った。
以前の記事で書いたスクリプトに適用出来そうだったので直してみた。

外部リンクを別窓で開く JavaScript, 動的追加されるリンクにも対応させてみた (jQuery使用)

変更前

ごちゃごちゃ。

$(window).click(function(event) {
  var target = $(event.target);
  if (!target.is("a")) {
    target = target.parents("a").first();
  }
  target.filter(
    "[href^=http]:not([href*='" + location.hostname + "'])"
  ).attr("target", "_blank");
});

変更後

すっきり :)

$(document).on("click",
  "a[href^=http]:not([target]):not([href*='" + location.hostname + "'])",
  function(event) { $(event.currentTarget).attr("target", "_blank") }
);

参考