我有以下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();
无效。
答案 0 :(得分:2)
在再次分配之前,您需要调用render() {
return (
<Template>
{'<div>some content</div>'}
</Template>
)
}
方法删除之前的事件侦听器。
.off