質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

328閲覧

<a>タグに外部リンクが指定されている場合、jqueryを使い自動でターゲット属性を付与したい。

dian_kat

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/09/20 13:39

現在のドメイン以外のリンクが<a>タグに指定されている場合、
ターゲット属性を自動で付与できるようにしたいです。

http://www.aabbcc.co.jp/index.html ↑こちらのドメインで表示している時 <a href="http://www.XXYYZZ.co.jp/index.html">...</a> ↑のようなリンクが指定されている場合、自動でターゲット属性を付与したい。

また合わせて、リンク先にPDFファイルが指定されている場合(test.pdf)
も同様にターゲット属性を付与できるようにしたいです。

解決方法をご教授いただければと思います。

html

1<div id="contents"> 2<ul> 3 4<li> 5<a href="/sample/01.html"> 6<p class="copy">テキストが入りますテキストが入りますテキストが入ります</p> 7</a> 8</li> 9 10<li> 11<a href="http://www.XXYYZZ.co.jp/index.html"> 12<p class="copy">テキストが入りますテキストが入りますテキストが入ります</p> 13</a> 14</li> 15<!--↑ブランクを指定したい--> 16 17<li> 18<a href="test.pdf"> 19<p class="copy">テキストが入りますテキストが入りますテキストが入ります</p> 20</a> 21</li> 22<!--↑ブランクを指定したい--> 23 24</ul> 25</div>

js

1// <div id="contents"></div>内だけで自動振り分けできるようにしたいので 2//eachでループできればと考えています。 3$('#contents').each(function(){ 4 5}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/09/20 14:05

例示用ドメインはご自身で所有されていない限り example.com, example.jp, example.co.jp など例示用に予約されたドメイン名を利用してください。 http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html また、ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
guest

回答3

0

JavaScript

1$('#contents a').each(function(index, element) { 2 if (element.host != location.host) { 3 element.target = '_blank'; 4 } else if (element.pathname.slice(-4).toLowerCase() === '.pdf') { 5 element.target = '_blank'; 6 } 7});

https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/host

https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname

投稿2017/09/21 04:55

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

JavaScript

1// #contents内のaタグだけを繰り返します 2$('#contents a').each(function(index){ 3 var href = $(this).prop('href'); 4 // .pdfで終わる、またはURLに自ドメインを含まない 5 if((href.lastIndexOf('.pdf') == href.length - '.pdf'.length) 6 || (href.indexOf(document.domain) == -1)) { 7 // 対象のaタグにtarget=_blankを設定 8 $(this).attr('target', '_blank'); 9 } 10});

投稿2017/09/21 00:48

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

たとえばこんな感じです

javascript

1$(function(){ 2 $('a').filter(function(){return $(this).attr('href').match(/^http|\.pdf$/)}).attr('target','_blank'); 3});

#追記
前方一致や後方一致だけならセレクタで十分だったかもしれません

javascript

1$(function(){ 2 $('a[href^="http"],a[href$=".pdf"]').attr('target','_blank'); 3});

投稿2017/09/21 00:19

編集2017/09/21 01:01
yambejp

総合スコア114742

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/09/21 01:17

<a href="//teratail.com/questions/93271" > 形式を無視してるが質問者は意図してないから問題ないか
yambejp

2017/09/21 01:22

asahina1979さん、ご指摘ありがとうございます。 filterにしてもセレクタにしても例示してあれば、 あとはユーザー側の運用次第ですね サンプルの「http」始まりだって「http.htm」かもしれないし、 あまり深く考えないようにしています。 hrefは手で書いているみたいですから、その範囲でユーザーが工夫すればいいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問