jQuery:为什么li元素上的click事件不起作用?

use*_*311 9 jquery html-lists jquery-animate

当点击一个li元素时,我想移动Div元素"nav".

我在div中有一个List

<div id="nav">
    <ul>
        <li><a href="#t1">Flyer</a></li>
        <li><a href="#t2">Code</a></li>
        <li><a href="#t3">Angebot</a></li>
        <li><a href="#t4">Bilder</a></li>
    </ul>
</div>  
Run Code Online (Sandbox Code Playgroud)

为什么这不适用于jquery:

$("#nav ul li").click(function(){
    $("#nav").animate({ 
        marginLeft: "-300px",
    }, 1000 );
});
Run Code Online (Sandbox Code Playgroud)

Mon*_*eus 9

根据您使用的Jquery版本,这可能有效,也可能无效:

$('body').on('click', '#nav ul li', function(){
    $("#nav").animate({ 
        marginLeft: "-300px",
    }, 1000 );
});
Run Code Online (Sandbox Code Playgroud)

我做了$('body'),因为如果你动态生成这些li,那么你需要在调用时绑定'委托事件'.


Ani*_*nil 6

代码可以正常工作,查看JSFiddle.

我有一种感觉,你忘了把它放在jQuery DOM Ready事件中.

确保代码看起来像这样(在DOM Ready中)

$(document).ready(function(){ // When the DOM is Ready, then bind the click
    $("#nav ul li").click(function(){
        $("#nav").animate({ 
            marginLeft: "-300px",
        }, 1000 );
    });
});
Run Code Online (Sandbox Code Playgroud)

确保您的页面上没有其他javascript错误(如果您在此代码之前执行此操作,则代码将无效),请检查您的控制台(在Chrome中右键单击> Inspect Element> console).

这两个问题中的一个导致您的问题(最有可能),否则您将不得不自己调试(或向我们展示更多代码).