在JQUERY中,如何在href URL的末尾添加变量onClick?

17

我觉得这应该可以工作,但实际上并没有。不确定我做错了什么。

function addURL()
{   
$(this).attr('href', function() {
return this.href + '&cylnders=12';
}   


<a onclick="addURL();" href="/search-results/?var1=red&var2=leather">Click this</a>
3个回答

32

首先,你漏了一堆括号:

function addURL()
{
    $(this).attr('href', function() {
        return this.href + '&cylnders=12';
    });
}

其次,在你的代码中,“this”指的是窗口,而不是元素。请改用以下代码:

this 指向 window,而不是元素。请使用以下代码替代:

<a onclick="addURL(this)" href="/search-results/?var1=red&var2=leather">Click this</a>

function addURL(element)
{
    $(element).attr('href', function() {
        return this.href + '&cylnders=12';
    });
}

啊,好发现,谢谢。不幸的是,那并没有完全解决它,虽然肯定是语法错误。 - 916 Networks
1
记录一下,你不需要jQuery:function addURL(element){element.href+='&cylnders=12';} - Christophe
JQUERY是否存在更多的开销和潜在问题,而JavaScript则更简单且更少潜在麻烦? - 916 Networks
jQuery并不小,如果你只是为了这个目的使用它,那么它会带来很大的开销。但是它并不会增加更多的问题。 - Christophe

4
为什么不在链接的href中添加ID或Class以便通过jQuery进行识别? 似乎在你能够添加任何数据到href属性之前,链接就已经被触发了。
<a class="datalink" href="/search-results/?var1=red&var2=leather">Click this</a>
<script>

$('.datalink').attr('href', function() {
return this.href + '&cylnders=12';

});

</script>

嗨,由于在你的示例中未定义锚标记的JavaScript函数,因此“return”语句不起作用。相反,应该是“this.href = this.href + '&cylnders=12”。 - Hemant

2
     function addURL()
      {
     var data=window.location+"&cylnders=12";
     alert(data);
     }

请尝试这个概念。希望它能为您提供一些解决方案。
也试试这个。
          function addURL()
          {
               window.location.href='/search-results/?var1=red&var2=leather&cylnders=12'
           }

当我添加这个时,我点击链接,它会返回我的当前URL并附加变量。我想我要做的是获取href中的URL,将变量添加到末尾,然后转到该URL。 - 916 Networks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接