我正在尝试使用.each()
检查所有主播标记,并将首页网址的目标设置为_self
,将其他非主页网址设置为_blank
。
到目前为止,我得到了这个:
$('a').each(function() {
var homeURL = 'google.ca';
if ( $(this+'[href*='+homeURL+']')) {
$(this).attr('target','_self');
}else{
$(this).attr('target','_blank');
}
});
这也是在jsBin here。
出于某种原因,非主页网址设置为target="_self"
。任何人都可以解释原因吗?
答案 0 :(得分:9)
请改为尝试:
if($(this).is("[href*=" + homeURL + "]")){
$(this).attr('target','_self');
} else {
$(this).attr('target','_blank');
}
如果所选元素与函数中的选择器匹配,则 is()
返回true
,如果不匹配,则返回false
。因此,如果当前链接为href
attribute contains google.ca
,则会将其target
属性更改为_self
。否则,它会将其设置为_blank
。
事实上,为了提高效率,您应该缓存$(this)
:
var $this = $(this);
if($this.is("[href*=" + homeURL + "]")){
$this.attr('target','_self');
} else {
$this.attr('target','_blank');
}
答案 1 :(得分:7)
var homeURL = 'google.ca';
$('a').each(function() {
$(this).attr('target', (this.href.match( homeURL )) ? '_self' :'_blank');
});
答案 2 :(得分:2)
你也可以通过以下方式实现这一目标:
$(document).ready(function() {
$("a[href^='http']").attr('target','_blank');
});