Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有动态选择器的jQuery on()_Jquery - Fatal编程技术网

带有动态选择器的jQuery on()

带有动态选择器的jQuery on(),jquery,Jquery,尝试使用jQuery on()切换水平菜单的打开/关闭 例如: 菜单可以打开,但我关不上。我知道这与选择一个动态添加的类有关,但在开始()工作时遇到了困难 如果有人能提供帮助,我们将不胜感激。从元素中删除m-menu-btn-closed类不会阻止打开菜单的单击事件被激活。它已经绑定到元素,因此不受更改类的影响 当您尝试关闭菜单时,用于打开菜单的事件处理程序也将被激活,并且您有两个动画相互对抗 您还可以对打开的事件处理程序使用委托,然后在删除该类时,该委托将被停用: $("#mobile-hea

尝试使用jQuery on()切换水平菜单的打开/关闭

例如:

菜单可以打开,但我关不上。我知道这与选择一个动态添加的类有关,但在开始()工作时遇到了困难


如果有人能提供帮助,我们将不胜感激。

从元素中删除
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%'});
  }
});