如何将target=_blank
属性添加到锚标记,但按钮和某个div除外。如何使用#?
我试过这个:
$('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>
答案 0 :(得分:1)
如果我理解正确,你想选择一个既没有类&#34; call-control&#34;使用jQuery's .not()
方法也不能将href
设置为&#34;#&#34;
要选择未将href
设置为&#34;#&#34;的元素,我建议jQuery's "Attribute Equals" Selector:
.not([href=#])
添加课程要求:
.not([href=#],.call-control)
我还建议使用removeAttr()
,而不是将target
设置为空字符串。
以下是一个例子:
$('a:not([href=#],.call-control)').attr('target', '_blank').addClass('checkMate');
/* remove the attribute after one second */
setTimeout(function(){
$('.checkMate').removeAttr('target');
},1000);
&#13;
a {
display: block;
}
.checkMate {
background-color:pink;
}
/* to demonstrate when the target has been removed */
a[target=_blank] {
background-color:lightgreen;
}
&#13;
<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>
&#13;
答案 1 :(得分: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=_blank
具有重要的 security vulnerability ,可以与window.opener()
一起使用。这可以是 seen here 。要解决此问题,您还需要在链接中添加rel="noopener noreferrer"
(如上所述)。
希望这有帮助! :)