这个jquery委托代码有什么问题?

这个jquery委托代码有什么问题?,jquery,function,delegates,undefined,ready,Jquery,Function,Delegates,Undefined,Ready,在body元素中,我有这个 运行此命令时,当我点击代理行时,我得到错误** TypeError:“undefined”不是一个函数(计算“$”(“div”)。委托(“#menubottbutt”,“click”,“toggleMenu())”) 当然,我有上面定义的方法toggleMenu,当从其他地方调用时,它可以工作。看起来是这样的`函数切换菜单(){ } ` 谢谢 PS这是我到目前为止得到的: 在onBodyLoad中,我将使用$(“#menubottbutt”)。单击(function

在body元素中,我有这个

运行此命令时,当我点击代理行时,我得到错误** TypeError:“undefined”不是一个函数(计算“$”(“div”)。委托(“#menubottbutt”,“click”,“toggleMenu())”)


当然,我有上面定义的方法toggleMenu,当从其他地方调用时,它可以工作。看起来是这样的`函数切换菜单(){

} `

谢谢 PS这是我到目前为止得到的: 在onBodyLoad中,我将使用$(“#menubottbutt”)。单击(function(){toggleMenu();}); 在其他合适的地方,我会称之为: $(“.menuitem”)。单击(函数(){toggleMenu();}); 这似乎解决了我的问题,但如果我能让代表开始工作,可能会更好。

试试看

$('#menus').toggle('slow'); 

$('#menubottbutt').toggleClass('pressed');
第三个参数必须是函数名

两者都是好的

  • “toogleMenu()”
  • “切换菜单”
  • function(){toggleMenu();}//建议使用此函数

    • 对不起,我不明白你的问题

      在阅读代码时,我猜页面上有3个div,当用户单击其中一个时,它们应该执行指定的方法

      所以我的解决方案是html

       $("div").delegate("#menubottbutt","click",function(){toggleMenu();});
       $("div").delegate(".menuitem","click",function(){toggleMenu();});
      
      希望这就是你要找的


      Thorsten

      嗨,这正是我刚开始的问题,它给出了同样的问题。这三种方法都是一样的。最终,我找到了一种避免使用委托函数的方法(在response preprocess函数中添加click处理程序),然后发现我使用的是一个旧版本的jquery,它无论如何都不支持委托。。。Doh!!!!谢谢,我已经尝试过类似的东西了,但是你的代码似乎很有效。但是委托方法不是更好吗,因为这样添加的任何新的.menuitem元素都不会自动获取处理程序。是的,我的.menuitem div不会以这种方式获取它们的处理程序。您所说的处理程序是什么意思?还可以使用bind方法将toggleMenu方法连接到DOM元素。我没有使用委托方法。
       $("div").delegate("#menubottbutt","click",function(){toggleMenu();});
       $("div").delegate(".menuitem","click",function(){toggleMenu();});
      
      <div id="menu" class="menu"></div>
      <div id="2ndMenu" class="menu"></div>
      <div id="3rdMenu" class="menu"></div>
      
      $(document).ready(function(){
          $('.menu').click(function(){toggleMenu()});
      });