请帮忙看看这样绑定事件为什么失败了?

winzond 2018-02-02 01:48:16

<ul>
<li class="menuP">
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
</ul


$(document).ready(function () {
$(".menuP a").bind("click", function () {
$(".menuP ul").slideToggle();
});
});

代码如上,执行不成功
...全文
165 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2018-02-02
  • 打赏
  • 举报
回复
动态生成的元素要用委托的方式绑定事件 $(".menuP").on("click", "a", function () { $(this).next('ul').slideToggle(); });
孟子E章 2018-02-02
  • 打赏
  • 举报
回复
jquery1.72之后的版本可以使用on $(document).on("click",".menuP a",function(){ }) 低版本可以使用live
wangwan_wangwan 2018-02-02
  • 打赏
  • 举报
回复
$(".menuP").delegate("a","click", function () { $(this).next('ul').slideToggle(); });
winzond 2018-02-02
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
要在dom对象下面执行你的js代码,要么放到dom ready里面执行或者用on来代理 而且代码页有问题,应该是 $(".menuP a").bind("click", function () { $(this).next('ul').slideToggle(); }); 你那个代码是吧.menuP下的ul都撸一遍了
谢谢你,经调试,代码逻辑问题是其次,最起码代码产生了动作,我的主要问题根源在于UL元素的内容是jQuery通过$.post动态生成的,即使事件代码放在动态生成代码的后面也不生效,完全没有任何动作。请教要怎样才能让动态生成的代码也能被绑定事件?难道必须用原生JS吗?
Go 旅城通票 2018-02-02
  • 打赏
  • 举报
回复
要在dom对象下面执行你的js代码,要么放到dom ready里面执行或者用on来代理 而且代码页有问题,应该是 $(".menuP a").bind("click", function () { $(this).next('ul').slideToggle(); }); 你那个代码是吧.menuP下的ul都撸一遍了

Web开发学习资料推荐
XDomainRequest,IE8+跨域请求对象
javascript运行机制浅析
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2018-02-02 01:48
社区公告
暂无公告