当仅单击一个元素时,我在 jQuery 中注册多次单击时遇到问题。我已经阅读了Stack Overflow上的其他一些线程来尝试解决它,但我认为这是我编写的代码。HTML 代码无效,但这是由某些 HTML 5 和使用 YouTube 嵌入代码引起的。没有什么会影响点击。
jQuery,在 document.ready 上触发
function setupHorzNav(portalWidth) {
$('.next, .prev').each(function() {
$(this).click(function(e) {
var target = $(this).attr('href');
initiateScroll(target);
console.log("click!");
e.stopPropagation();
e.preventDefault();
return false;
});
});
function initiateScroll(target) {
var position = $(target).offset();
$('html, body').animate({
scrollLeft: position.left
}, 500);
}
}
示例 HTML
<nav class="prev-next">
<a href="#countdown-wrapper" class="prev">Prev</a>
<a href="#signup-wrapper" class="next">Next</a>
</nav>
在 Firefox 中,单击即可记录“单击!” 16次!Chrome 只看到一个,但两种浏览器都显示上述代码存在问题。
是我写错了代码还是有错误?
-- 一些额外的信息 ------------------------------------------
setupHorzNav 由我的代码中的另一个函数调用。我已经对此进行了测试并确认它仅在初始加载时被调用一次。
if ( portalWidth >= 1248 ) {
wrapperWidth = newWidth * 4;
setupHorzNav(newWidth);
}
else
{
wrapperWidth = '100%';
}
nav 'prev-next' 有多个实例。所有目标都是不同的锚点。所有都在同一个html页面中。
<nav class="prev-next">
<a href="#video-wrapper" class="prev">Prev</a>
</nav>