单击 <a> 标签时如何防止页面刷新?

How to prevent page refresh when <a> tag clicked?

我需要将一个参数传递给 URL,同时防止在我单击具有空白 href 属性的任何 <a> 标签时重新加载页面(<a href="">)

有没有办法用 JS/jQuery 做到这一点?

我已经有了这个jQuery

$('.list-group-item a').click(function (event) {
  event.preventDefault();
});

但是当我单击 <a href="inbox/1">Message</a>(任何带有 href 的锚点)时,preventDefault 会阻止该值被传递到 url。

有人能帮忙吗?

提前致谢。

您可以使用 Attribute equal selector 来防止在空白 href 的情况下发生点击事件,例如

$('.list-group-item a[href=""]').click(function (event) { // where href are blank
   event.preventDefault();
});

我建议不要将 href's 设为空,如果没有链接,您可以放置​​ #

使用jQuery的fancy selectors, especially the attribute equals一个。

使用它,您可以 select 仅 <a> 具有空白 href 属性的标签:

$('.list-group-item a[href=""]').click(function(event) {
  event.preventDefault();
});

$('.list-group-item a[href=""]') select 或将收集的元素缩小到仅包含 list-group-item 的 class 和空白 href 的那些锚标签。

这意味着所有其他锚标签都可以正常工作。

window.location.hash="inbox/1"可以更新url中的哈希值。这可以通过事件 preventDefault 代码来完成。

试试下面的代码

  $('.list-group-item a').click(function (event) {
   event.preventDefault();
   var url = $(this).attr('href');
   window.history.replaceState("object or string", "Title",url); // this will change your url
 });

更多详情http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/