什么是更简洁的方式将某些内容附加到链接URL?

时间:2013-02-05 16:08:28

标签: 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;
});

4 个答案:

答案 0 :(得分:11)

执行以下操作:

$(this).attr('href', newLink);

答案 1 :(得分:8)

您的方法存在问题:每次点击时都会将schoolName附加到网址,即使用户定位到另一个标签页也是如此。

所以我建议不要混淆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"
   });

答案 2 :(得分:1)

简单地说,这样做: -

$('.passName').click(function() {
    $(this).attr('href', this.href+'18734');
});

答案 3 :(得分:0)

您实际上不需要创建新的jQuery对象,您只需:

$('.passName').click(function() {
   var schoolName = "18734";
   this.href += schoolName;
});

库作为jQuery很有用,但我们不应该忘记简单的JavaScript和DOM。

另外,在JS中你不能像你所做的那样真正“分配”某个函数调用。在jQuery中,设置属性值的方法是$(this).attr('attr', newLink)