アンカー<a />タグにtarget属性を追加する(別窓で開く)

概要:
アンカー<a />タグに target 属性を設定し、別ウィンドウで表示する
アンカーを囲んだタグに a-target-[追加したい値] のクラスを設定する

reStructuredText (reST)

概要:全ての子要素のアンカー<a />タグにtarget属性を設定する
.. only:: html or singlehtml

   .. raw:: html

      <div class="a-target-_blank">


`別ウィンドウで表示 <http://algo13.net>`_

.. only:: html or singlehtml

   .. raw:: html

      </div>

htmlイメージ

<div class="a-target-_blank">
  <a target="_blank" href="http://www.algo13.net">別ウィンドウで表示</a><!-- target="_blank" は JavaScript で付与 -->
</div>

JavaScript(jQuery)

$(function() {
  // a-target-[value]
  // クラス属性に "a-target-" を含むタグ
  // (今回の例では <div class="a-target-_blank">)
  $('[class*="a-target-"]').each(function() {
    // クラス属性の値を追加する対象は、全ての子要素の<a />タグ
    var objAnchor = $(this).find('a');
    // 複数クラスが指定されている可能性があるので、スペース(' ')で分割
    $($(this).attr('class').replace(/[\t\r\n\s]+/g,' ').replace(/(^\s+|\s+$)/g,'').split(' ')).each(function() {
      // 'a-target-' から始まるクラス名の場合
      if (this.lastIndexOf('a-target-', 0) == 0) { //< startsWith
        // 'a-target-' より後の文字列をtargetの値として、<a />タグに追加
        objAnchor.attr('target', this.substr(new String('a-target-').length));
      }
    });
  });
});

注釈

複数のクラスを配列で取得したい場合のjQuery拡張
jQuery.fn.extend({
    getClasses: function() {
        return $(this).attr('class').replace(/[\t\r\n\s]+/g,' ').replace(/(^\s+|\s+$)/g,'').split(' ');
    }
});

注釈

全体で外部リンク全てに target="_blank" を付与したい場合のJavaScript(jQuery)
$(function() {
  $('a[href^=http]').not('[href*="+location.hostname+"]').attr('target', '_blank');});
});