Javascript 在链接URL中添加内容的更干净的方法是什么?
到目前为止,我已经得到了这个代码,但它不起作用:Javascript 在链接URL中添加内容的更干净的方法是什么?,javascript,jquery,jquery-selectors,jquery-attributes,Javascript,Jquery,Jquery Selectors,Jquery Attributes,到目前为止,我已经得到了这个代码,但它不起作用: $('.passName').click(function(){ var schoolName = "18734"; var link = $(this).attr('href'); var newLink = link + schoolName; $(this).attr('href') = newLink; }); 请执行以下操作: $(this).attr('href', newLink); 您的方法存在
$('.passName').click(function(){
var schoolName = "18734";
var link = $(this).attr('href');
var newLink = link + schoolName;
$(this).attr('href') = newLink;
});
请执行以下操作:
$(this).attr('href', newLink);
您的方法存在一个问题:每次单击时,您都会将学校名称附加到URL,即使用户指向另一个选项卡 因此,我建议不要弄乱
href
属性,而是在单击时执行以下操作:
$('.passName').click(function(){
location.href = this.href + "18734";
});
或者至少检查一下您以前没有添加它:
$('.passName').click(function(){
var schoolName = "18734";
var link = this.href;
if (link.indexOf(schoolName, link.length - schoolName.length)!==-1) {
this.href = link+schoolName
}
});
或者,正如Felix Kling所建议的,只需确保函数只被调用一次:
$('.passName').one('click', function(){
this.href += "18734"
});
实际上,您不需要创建新的jQuery对象,只需:
$('.passName').click(function() {
var schoolName = "18734";
this.href += schoolName;
});
库和jQuery一样有用,但我们不应该忘记简单的JavaScript和DOM
另外,在JS中,您不能在进行函数调用时真正“分配”某些内容;在jQuery中,设置属性值的方法是
$(this).attr('attr',newLink)
简单地说,这样做:-
$('.passName').click(function() {
$(this).attr('href', this.href+'18734');
});
$(this.attr('href')=newLink
获取一个错误上下文,了解它是如何使用的,以及什么不起作用将是有帮助的。单击一次更改链接的问题是,如果打开另一个选项卡,您的链接将增长……请尝试以下简写:$(this).attr('href',$(this).attr('href')+'18734')
@watson:这不是您使用的方式。。。。或者干脆this.href=newLink代码>,在这种情况下。@VisioN我知道,但这似乎更合理:)太棒了…这就是为什么我要遵循你的答案。。!!或者使用.one
而不是。单击,只执行一次处理程序。@FelixKling。。。这看起来是个好答案。。。是否要正确地编写它?这不是中断了Ctrl键并单击以在新选项卡中打开内容吗?在一个地方使用普通这个有什么好处?但在另一个地方却没有,我想知道?只需编写this.href+=“18734”
就可以了。