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

时间:2011-07-29 19:25:56

标签: jquery function delegates undefined ready

function onBodyLoad()
{       
    document.addEventListener("deviceready",onDeviceReady,false);
    //for testing in safari only, comment out for deploy to iphone with phonegap
    $(document).ready(function(){ 
        loadPage('mainmenu', 'Home');

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

        //I have a nested div in this index.html file with id=menubottbutt  
        $("div").delegate("#menubottbutt","click",toggleMenu());

                $("div").delegate(".menuitem","click",toggleMenu());
    });


}

在body元素中我有这个

当它运行并且我点击委托行时,我收到错误 * * TypeError:'undefined'不是函数(评估'$(“div”)。delegate(“#menubottbutt”,“click”,toggleMenu())')


当然我有上面定义的toggleMenu方法,它可以在从其他地方调用时工作。它看起来像`function toggleMenu(){

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

$('#menubottbutt').toggleClass('pressed');

} `

感谢

PS这就是我到目前为止所拥有的: 在我的onBodyLoad中,我将使用$(“#menubottbutt”)。click(function(){toggleMenu();}); 在其他适当的地方我会打电话:  $( “菜单项”)点击(函数(){toggleMenu();}); 这似乎解决了我的问题,但如果我能让代表工作,那可能会更好。

2 个答案:

答案 0 :(得分:1)

抱歉,但我没有遇到你的问题。

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

所以我的解决方案是html

<div id="menu" class="menu"></div>
<div id="2ndMenu" class="menu"></div>
<div id="3rdMenu" class="menu"></div>

JS看起来像这样

$(document).ready(function(){
    $('.menu').click(function(){toggleMenu()});
});

希望这是你正在寻找的东西

和Thorsten

答案 1 :(得分:0)

 $("div").delegate("#menubottbutt","click",function(){toggleMenu();});
 $("div").delegate(".menuitem","click",function(){toggleMenu();});

第三个参数必须是函数名称

要么好又

  • “toogleMenu()”
  • “toggleMenu”
  • function(){toggleMenu();} //推荐这个