我有以下的jQuery用于改变下拉菜单:的jQuery:函数调用两次导致奇怪的行为
function getStatus(item) {
return $(item).hasClass("active")
}
$(document).on("page:change", function() {
$(".nav-element.parent").click(function(e) {
el = $(this)
if (getStatus(el)) {
$(this).toggleClass("active")
$(this).find(".nav-child-element").slideToggle()
} else {
$(".nav-element.parent").removeClass("active")
$(".nav-child-element").slideUp();
$(this).addClass("active")
$(this).find(".nav-child-element").slideDown();
}
})
});
和功能的正常使用,除非我导航到另一个页面,然后回去,使用浏览器返回键。然后当我点击$(".nav-element.parent")
元素时,循环会有效地打开下拉菜单两次。
奇怪的是,当我将$(".nav-element.parent").click(function(e) {
行更改为$(document).on("click", ".nav-element.parent", function(e) {
时,循环出现3次。我不知道如何解决这个问题,最后加入e.stopPropagation();
没有任何效果。
如果您点击后刷新,会发生这种情况吗?你最有可能遇到这种情况,因为处理程序没有从内存中删除。您应该删除'window.beforeunload'事件中的处理程序。 –