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

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

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

HTML

 Do Something 

JS

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

你写的是真的(它足以调试jQuery源代码):触发器点击事件不适用于锚点。

为了实现您的尝试,您可以获取dom元素,然后触发点击:

 $('a[href="#hash"]').get(0).click() 

这只会起作用。

这里的新人希望不会让自己感到震惊。 我只是想在我的网站上使用的这段代码中的某些东西可能对你有帮助。 它有点类似于你所描述的。

 $(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; }); }); }); 

click方法(当由jquery使用时)触发你使用el.click(function..注册的click事件el.click(function..el.on('click', function...

您可以创建一个新的MouseEvent并将其直接发送到相关元素:

 e = document.createEvent('MouseEvents'); e.initEvent("click", true, true); $('a[href="#hash"]')[0].dispatchEvent(e) 

以上代码适用于Chrome,Firefox和IE

或者只使用元素的click事件(不使用jquery的click函数,但浏览器的click函数):

 $('a[href="#hash"]')[0].click() 

请注意,出于安全原因,此代码可能无法在多个浏览器中使用。