jQuery:为什么li元素上的click事件不起作用?
当点击li元素时,我想移动Div元素“nav”。
我在div中有一个List
为什么这不适用于jquery:
$("#nav ul li").click(function(){ $("#nav").animate({ marginLeft: "-300px", }, 1000 ); });
代码可以正常工作,查看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 ); }); });
确保您的页面上没有其他javascript错误(如果您在此代码之前执行操作,则代码将无效),请检查您的控制台(在Chrome中右键单击>检查元素>控制台)。
这两个问题中的一个导致您的问题(最有可能),否则您将不得不自己调试(或向我们展示更多代码)。
根据您使用的Jquery版本,这可能有效,也可能无效:
$('body').on('click', '#nav ul li', function(){ $("#nav").animate({ marginLeft: "-300px", }, 1000 ); });
我做了$(’body’),因为如果你动态地生成这些li,那么你需要在调用时绑定’委托事件’。
它按预期工作,但您必须单击li元素。 如果单击锚点,它可能会在某些浏览器上中断。
这是一个更好的方法。
HTML
jQuery的
(function($) { var nav = $('#nav'); nav.find('a').on('click',function(e){ e.preventDefault(); nav.animate({ marginLeft: "-300px", }, 1000 ); }); })(jQuery);
当然,小提琴: http : //jsfiddle.net/dKPqJ/
尝试这个,我认为你的代码也没有错误。
据我所知,如果为#nav提供float:left属性,你的代码将会起作用。
如果您设置位置,则以下代码将起作用。
$(document).ready(function(){ $("#nav ul li").click(function() { $("#nav").animate({ left: "-=300px", }, 1000 ); }); });
或试试这个
$(document).ready(function(){ $("#nav ul li").click(function() { $("#nav").animate({ "left": "-=300px" }, "slow"); }); });