Javascript 触发或模拟散列单击
由于页面上的视差滚动,我在排列散列链接时遇到了麻烦,我发现唯一可以轻松克服这一问题的方法是,当你单击散列链接时,它会再次被单击,因此它会运行两次。我试过:Javascript 触发或模拟散列单击,javascript,jquery,skrollr,Javascript,Jquery,Skrollr,由于页面上的视差滚动,我在排列散列链接时遇到了麻烦,我发现唯一可以轻松克服这一问题的方法是,当你单击散列链接时,它会再次被单击,因此它会运行两次。我试过: $("a[href*='#']").click( function() { $(window.location.hash).click(); }); 这是怎么做到的呢?应该是这样的,但它最终会进入无限循环 $("a[href^='#']").click( function() { $(this).trigger('clic
$("a[href*='#']").click( function() {
$(window.location.hash).click();
});
这是怎么做到的呢?应该是这样的,但它最终会进入无限循环
$("a[href^='#']").click( function() {
$(this).trigger('click');
});
最好试试这个:
$("a[href^='#']").on('click', function() {
$(this).off('click').trigger('click');
});
如果将其他单击事件附加到这些链接,请同时添加命名空间:
$("a[href^='#']").on('click.mynamespace', function() {
$(this).off('click.mynamespace').trigger('click');
});
编辑:
添加超时将有助于触发它两次:
$("a[href^='#']").on('click.mynamespace', function() {
var $self = $(this);
setTimeout(function(){
$self.off('click.mynamespace').trigger('click');
},1);
});
不幸的是,这也不起作用,如果你看这里,并点击项目链接最好的例子,而在页面顶部,它不会排队,直到你再次按下。此代码位于页面和控制台上。已登录。发生了一些不同的情况。是否有任何JS操作会在加载后改变dom元素?只是一些ajax替换了一个span和一个包含元素大小调整的滑块。还有用于视差的Skrollr。它与视差有关。重新加载页面并在项目下方滚动,单击会将您带到预期位置。即使你可以通过触发两次点击来破解系统,你也应该修复最初的问题,或者你可能在其他设备上遇到问题。哦,对不起,我知道这是视差造成的。他们的工具允许散列链接与skrollr一起工作,但它甚至不能解决这个问题。此外,我还设置了视差,使其仅适用于桌面浏览器。