带有动态选择器的jQuery on()
尝试使用jQuery on()切换水平菜单的打开/关闭 例如: 菜单可以打开,但我关不上。我知道这与选择一个动态添加的类有关,但在开始()工作时遇到了困难带有动态选择器的jQuery on(),jquery,Jquery,尝试使用jQuery on()切换水平菜单的打开/关闭 例如: 菜单可以打开,但我关不上。我知道这与选择一个动态添加的类有关,但在开始()工作时遇到了困难 如果有人能提供帮助,我们将不胜感激。从元素中删除m-menu-btn-closed类不会阻止打开菜单的单击事件被激活。它已经绑定到元素,因此不受更改类的影响 当您尝试关闭菜单时,用于打开菜单的事件处理程序也将被激活,并且您有两个动画相互对抗 您还可以对打开的事件处理程序使用委托,然后在删除该类时,该委托将被停用: $("#mobile-hea
如果有人能提供帮助,我们将不胜感激。从元素中删除
m-menu-btn-closed
类不会阻止打开菜单的单击事件被激活。它已经绑定到元素,因此不受更改类的影响
当您尝试关闭菜单时,用于打开菜单的事件处理程序也将被激活,并且您有两个动画相互对抗
您还可以对打开的事件处理程序使用委托,然后在删除该类时,该委托将被停用:
$("#mobile-header-left").on("click", ".m-menu-btn-closed", function() {
或者,您可以使用单个事件处理程序,并在其中了解单击按钮时要执行的操作:
$("#m-menu-btn").click(function() {
if ($(this).is(".m-menu-btn-closed")) {
$(this).removeClass("m-menu-btn-closed").addClass("m-menu-btn-open");
$("#m-menu").animate({left:'0'});
} else {
$(this).removeClass("m-menu-btn-open").addClass("m-menu-btn-closed");
$("#m-menu").animate({left:'-75%'});
}
});
也许您应该在语句上使用另一个
,因为您是在动态添加类。请添加一个JSFIDLE示例?这似乎是一种更优雅的方法,而且很有效。谢谢你,哈哈!
$("#mobile-header-left").on("click", ".m-menu-btn-closed", function() {
$("#m-menu-btn").click(function() {
if ($(this).is(".m-menu-btn-closed")) {
$(this).removeClass("m-menu-btn-closed").addClass("m-menu-btn-open");
$("#m-menu").animate({left:'0'});
} else {
$(this).removeClass("m-menu-btn-open").addClass("m-menu-btn-closed");
$("#m-menu").animate({left:'-75%'});
}
});