要素が 1 つだけクリックされたときに複数のクリックが jQuery に登録されるという問題があります。Stack Overflowの他のスレッドを読んで解決しようとしましたが、それは私が書いたコードだと思います。HTML コードは無効ですが、一部の HTML 5 と YouTube 埋め込みコードの使用が原因です。クリックに影響を与えるものは何もありません。
document.ready でトリガーされる jQuery
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 では、1 回のクリックで "Click!" を記録できます。16回!Chrome には 1 つしか表示されませんが、両方のブラウザーで上記のコードに問題が見られます。
コードを間違って書いたのでしょうか、それともバグがありますか?
-- 追加情報 ------------------------------------------
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>