单击jQuery后更改链接href

JCH*_*E11 19 jquery attributes

我正在尝试创建一个链接,单击该链接时,切换其href属性,然后转到该位置.

我的HTML是:

<a href="http://google.com" rel="group" data-wpurl="http://yahoo.com"></a>
Run Code Online (Sandbox Code Playgroud)

点击后,我希望浏览器转到data-wpurl位置,而不是href位置.我使用数据属性的原因是因为我使用的应用程序需要使用href ...这里不相关.

我的jQuery是:

$('a[rel="group"]').on('click', function(e) {
      e.preventDefault();
      var wpurl = $(this).attr("data-wpurl");
      $(this).attr('href', wpurl);
});
Run Code Online (Sandbox Code Playgroud)

我正在使用e.preventDefault(); 防止浏览器将用户带到href.将数据属性分配给href后,如何触发单击?使用trigger('click')click();不工作!

有任何想法吗?

Ger*_*ald 24

类似的解决方案,但不需要调用 e.preventDefault()

$('a[rel="group"]').on('click', function(e) {
    e.originalEvent.currentTarget.href = $(this).data('wpurl');
});
Run Code Online (Sandbox Code Playgroud)

从我的角度来看,这是一个更通用,更清洁的解决方案,因为这不会改变默认的浏览器行为(例如:当用户点击链接上的鼠标滚轮时,Jacks解决方案将不会打开新标签)


Ja͢*_*͢ck 18

立即更改位置会更容易:

e.preventDefault();
location.href = $(this).data('wpurl');
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 8

使用onmousedown.Google会在搜索结果页面上使用此方法,以便他们可以跟踪您点击的内容.如果您想查看链接的位置,请右键单击而不是向左键.它们都会触发onmousedown事件.

http://jsfiddle.net/afLE3/

<a href="http://google.com" data-wpurl="http://yahoo.com" onmousedown="rwt(this)">CLICK HERE</a>

<script type="text/javascript">
  rwt = function(e){
    e.href = $(e).data('wpurl');
  }
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为你的原始jQuery很好,除了e.preventDefault():这将停止事件触发,无论你在那之后对href属性做了什么.

$('a[rel="group"]').on('click', function(e) {
      var wpurl = $(this).attr("data-wpurl");
      $(this).attr('href', wpurl);
});
Run Code Online (Sandbox Code Playgroud)

以上所有代码都将在页面刷新之前执行.