触发单击链接不会更改位置哈希

Far*_* Rn 5 javascript jquery fragment-identifier

我正在开发一个onHashChange在某些情况下使用事件监听器的Web应用程序,并且手动点击链接时href="#hash"效果非常好.但是当我触发时,使用jQuery点击相同的链接$('a[href=#"hash"]').trigger('click')$('a[href=#"hash"]').click()地址栏中的哈希不会改变.

这是我做错了吗?或者我为此目的使用另一种方法?

HTML

<a href="#hash">Do Something</a>
Run Code Online (Sandbox Code Playgroud)

JS

// Not working
$('a[href="#hash"]').click();

// Not working
$('a[href="#hash"]').trigger('click');
Run Code Online (Sandbox Code Playgroud)

小智 5

希望这里的新人不会出风头。我只是想也许我在我的网站上使用的这段代码中的某些内容可能会对您有所帮助。看起来和你描述的有点相似。

$(document).ready(function(){
  $('a[href^="#"]').on('click',function (e) {
    e.preventDefault();

    var target = this.hash;
    var $target = $(target);

    $('html, body').stop().animate({
      'scrollTop': $target.offset().top
    }, 900, 'swing', function () {
      window.location.hash = target;
    });
  });
   });
Run Code Online (Sandbox Code Playgroud)


gae*_*noM 4

你写的是真的(调试jQuery源代码就足够了):触发点击事件在锚点上不起作用。

为了实现您正在尝试的目标,您可以获取 dom 元素,然后触发单击:

$('a[href="#hash"]').get(0).click()
Run Code Online (Sandbox Code Playgroud)

只有这样才有效。