Javascript 这个<;李>;没有被调用吗?

Javascript 这个<;李>;没有被调用吗?,javascript,jquery,menu,event-handling,Javascript,Jquery,Menu,Event Handling,我的菜单如下: <button id="button" onclick="DropDown(event)">Drop down the menu</button> <div id="menu"> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul

我的菜单如下:

<button id="button" onclick="DropDown(event)">Drop down the menu</button>
<div id="menu">
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
</div>
大多数代码都按预期工作:单击按钮将下拉菜单,单击任意位置将使菜单消失但是,分配给
  • 项的事件处理程序根本不会被调用,尽管正在调用
    文档的
    onclick
    处理程序


    jsIDLE:

    尝试将事件附加到
    $(document).ready()
    块中或通过使用活动处理程序。这将确保在元素存在时附加事件。下面的方法对我有用

    // When clicking on the items
    $('#menu li').live("click",function () {
    
        alert("Hello!");
        $(document).append('<code>Clicked item!</code>');
    
    }); 
    

    尝试将事件附加到
    $(document).ready()
    块中,或使用live处理程序。这将确保在元素存在时附加事件。下面的方法对我有用

    // When clicking on the items
    $('#menu li').live("click",function () {
    
        alert("Hello!");
        $(document).append('<code>Clicked item!</code>');
    
    }); 
    

    这里有一个问题:我宁愿选择就绪路线,也不愿选择实时路线(尽管也许您可以使用委派);众所周知,使用live通常是件坏事(有一篇文章讨论了这一点:)。这里有一个等待DOM ready的小把戏:解释一下,原始代码的问题是,在文档中出现
    #menu li
    之前,您正在查询它。感谢您指出这个问题-在阅读您的答案之前,我真的很困惑。这里有一个问题:我宁愿选择就绪路线,也不愿选择实时路线(尽管也许您可以使用委派);众所周知,使用live通常是件坏事(有一篇文章讨论了这一点:)。这里有一个等待DOM ready的小把戏:解释一下,原始代码的问题是,在文档中出现
    #menu li
    之前,您正在查询它。感谢您指出这个问题-在阅读您的答案之前,我真的很困惑。