e.preventDefault()导致:活动状态粘在锚点上

时间:2013-10-26 20:58:14

标签: javascript jquery preventdefault

所以我正在使用HTML5历史记录API将视图转换为我的.js应用程序中的视图。

我有$('a').click函数执行e.preventDefault()后跟路径转换:

$("a").click(function (event) {
  if (this.host === window.location.host && this.getAttribute('data-bypass') === null) {
    event.preventDefault()
    indexRouter.navigate(this.pathname, true)
  }
})

这很好用,除了在WebKit浏览器中,锚的状态卡在:active上。当移动被释放时,如何让它返回到正常的锚状态?

最接近hacky的答案将被接受,我确信有很多方法可以做到这一点。

更新#1:

到目前为止我发现的最佳解决方案是使用bonzo分离和重新附加元素:

var previous = $(this).previous()
  , next = $(this).next()
  , parent = $(this).parent()
  , detached = $(this).detach()

if (previous.length) previous.after(detached)
else if (next.length) next.before(detached)
else if (parent.length) parent.append(detached)
else $('body').append(detached)

但是很多代码都是如此微不足道。

更新#2:

更新#1是唯一可行的,并且很多代码都很好,我把它变成了一个名为$.reset()的可重用函数。还有一个问题:

当您点击链接时,光标从pointer光标变为default光标,感觉很不方便。

有没有办法让这个工作?我已经做了很长时间的Web开发,看起来这是WebKit最近的一个错误,它已经进入Safari 7和Chrome 23左右。

0 个答案:

没有答案