2012-02-27 7 views
4

すべてのアンカータグを.each()でチェックし、ホームURLのターゲットを_self、その他のホーム以外のURLのターゲットを_blankに設定しようとしています。これはjsBin hereにもありhref属性に特定のフレーズが含まれている場合、リンクターゲット属性を変更してください

$('a').each(function() { 
    var homeURL = 'google.ca';  
    if ($(this+'[href*='+homeURL+']')) { 
     $(this).attr('target','_self'); 
    }else{ 
     $(this).attr('target','_blank'); 
    } 
}); 

はこれまでのところ、私はこれを得ました。

何らかの理由で、ホーム以外のURLがtarget="_self"に設定されています。なぜ誰かが説明できますか?

+0

? – elclanrs

答えて

6

代わりにこれを試してください。

if($(this).is("[href*=" + homeURL + "]")){ 
    $(this).attr('target','_self'); 
} else { 
    $(this).attr('target','_blank'); 
} 

is()戻りtrueをそうでない場合に選択された要素は、機能及びfalseでセレクタに一致する場合。したがって、現在のリンクのhrefattribute containsgoogle.caの場合、target属性は_selfに変更されます。それ以外の場合は、_blankに設定されます。

そして、実際には、より効率のために、あなたは$(this)をキャッシュする必要があります

var $this = $(this); 
if($this.is("[href*=" + homeURL + "]")){ 
    $this.attr('target','_self'); 
} else { 
    $this.attr('target','_blank'); 
} 
+0

Thnx!ニース、私はこのウェブサイトを愛するようになっています!私は既に3つの質問をしました。今日は私が質問を投稿し始めた最初の日であり、短時間で彼らは答えました。そこにすばらしい人々と素晴らしいウェブサイト! – FoxKllD

+0

@FoxKllD:問題ありません。それはサイトのアイデアです!私は仲間のプログラマーを助けるためにここにいるのが大好きです。 :)私の答えがあなたの問題を解決するのに役立つならば、それは将来の訪問者に受け入れられたとマークするのがよい習慣であることを指摘したいと思います。 – Purag

+0

私は毎分それをマークしようとしていました。そして5番目に私はついにあなたの答えをマークできました! LoL、私の問題は、私が問題を知らなかったことだと思う。 – FoxKllD

6
var homeURL = 'google.ca'; 
$('a').each(function() {   
    $(this).attr('target', (this.href.match(homeURL)) ? '_self' :'_blank');  
}); 
+0

Thnx man!あなたは、私がやりたいことをする別の方法を私に示しました。ほんとうにありがとう。 – FoxKllD

+0

非常に素晴らしい、エレガントなソリューション。 –

2

あなたはまたでこれを達成することができます:あなたがHTMLを投稿することができ

$(document).ready(function() { 
    $("a[href^='http']").attr('target','_blank'); 
}); 
関連する問題