Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 触发或模拟散列单击_Javascript_Jquery_Skrollr - Fatal编程技术网

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一起工作,但它甚至不能解决这个问题。此外,我还设置了视差,使其仅适用于桌面浏览器。