2017-08-17 4 views
1

アンカータグにtarget=_blank属性を追加する方法(ボタンと特定のdivを除く) #を使って "call-control"クラスとIDにtarget属性を追加しないでください。特定のIDを除くアンカータグに「target = '_blank'」を追加

私が試したこの私が正しく理解していれば、あなたはクラス「呼制御」もhrefセットに「どちらを持っている要素を選択したい

$('a:not(.call-control,"#")').attr('target', '_blank').addClass('checkMate'); 
 

 
/* then later... */ 
 
$('.checkMate').attr("target", "");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="call-control"> 
 
    <span id="incomingCallBrand"></span> 
 
</div> 
 
<div> 
 
    <a href="#" class="comms-icon" id="iambusy"></a> 
 
    <span>Peter</span> 
 
</div>

+3

[問題のデモンストレーション](https://stackoverflow.com/help/mcve)にHTMLを含めてください。 – showdev

+0

1. '.call-control'と'# 'を含むすべての 'a'タグに' target = _blank'を追加してください ---------- 2. '.call-control'を選択してください。 '#'を削除し、 'target = _blank'属性を削除します – trgiangvp3

答えて

0

かかわらず、あなたが選択しようとしている具体的にどのようなリンクの、あなたのセレクタは無効です。あなたが$("a:not('.class')")探している特定のクラスを持たない任意のリンクに選択を適用するに

:特定のクラスを持っていない任意のリンクに選択を適用するには

、あなたは$("a:not('[href=#'])")探している:

これらは$("a:not('.class-control, [href=#]')")として組み合わせることができます

$("a:not('.call-control, [href=#]')").attr("target", "_blank").addClass('checkMate');
.checkMate { 
 
    color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a class="call-control" href="#" rel="noopener noreferrer">Same Page (doesn't get the target)</a> 
 
<br /> 
 
<a class="call-control" href="http://www.google.com" rel="noopener noreferrer">Google (doesn't get the target)</a> 
 
<br /> 
 
<a href="http://www.facebook.com" rel="noopener noreferrer">Facebook (gets the target)</a>

また、それはtarget=_blankwindow.opener()で活用することができる重要なsecurity vulnerabilityを、持っていることに注意することが重要です。これは、seen hereとすることができます。これを修正するには、上記のようにリンクにrel="noopener noreferrer"を追加する必要があります。

希望すると便利です。 :)

+0

名前を持つクラスを除外します。コールコントロール "とhref = '#'を持たないタグ –

+0

@PrabinPoudel - 正確にカバーするために私の答えを更新しました。] –

+0

@ bsidian-ageに感謝します。 rel = ""フィールドは私の文脈ではあまり効果がありません。 –

1

# "、jQuery's .not()メソッドを使用します。

.not([href=#],.call-control) 

targetの設定とは対照的に、私もremoveAttr()をお勧めします。

.not([href=#]) 

クラスの要件を追加:

は、私が jQuery's "Attribute Equals" Selectorが示唆する "#" に href設定されていない要素を選択するには空の文字列。ここで

は例です:参考

$('a:not([href=#],.call-control)').attr('target', '_blank').addClass('checkMate'); 
 

 
/* remove the attribute after one second */ 
 
setTimeout(function(){ 
 
    $('.checkMate').removeAttr('target'); 
 
},1000);
a { 
 
    display: block; 
 
} 
 

 
.checkMate { 
 
    background-color:pink; 
 
} 
 

 
/* to demonstrate when the target has been removed */ 
 
a[target=_blank] { 
 
    background-color:lightgreen; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a href="#" class="call-control">Class and HREF</a> 
 
<a href="page.html" class="call-control">Just Class</a> 
 
<a href="#">Just HREF</a> 
 
<a href="http://example.com">Neither Class nor HREF</a>


Add a class to a href that's set to '#'

関連する問題