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”
就可以了。