我目前遇到PHP和jQuery的问题。
我建立了这样一个网站:
header.php - 这是加载所有css和js文件的地方。 index.php - 主页。 sidemenu.php - 这是侧面菜单,包含在index.php
中在sidemenu.php里面我有这个JS代码:
<script type="text/javascript">
jQuery(document).ready(function($) {
$(".more").live('click', function(){
$(this).next(".submenu").slideToggle(500); });
});
</script>
哪个应该得到.more to slideToggle:
<div class="twocol" id="side-menu">
<ul class="menu">
<li>Dashboard</li>
<li class="more"><a href="#">Security Settings</a> <img src="images/dropdown-menu.png" align="right"></li>
<ul class="submenu">
<li>Blacklistings</li>
<li>New Membership Package</li>
</ul>
<li class="more"><a href="memberships.php">Memberships</a> <img src="images/dropdown-menu.png" align="right"></li>
<ul class="submenu">
<li>New Membership</li>
<li>New Membership Package</li>
</ul>
<li>Forums</li>
<li>Help Desk</li>
<li class="help">Documentation</li>
</ul>
</div><!-- END 2col -->
然而,当我点击.more。
时没有任何反应很奇怪,如果我只使用上面三页的源代码制作一个页面,它就可以了。
我做错了什么?
提前致谢。
答案 0 :(得分:2)
您应该替换:
$(this).next(".submenu").slideToggle(500);
通过
$(this).children(".submenu").slideToggle(500);
(接下来在同一级别调用以下标记)
修改:
我有点失明,在用您的子菜单打开.more
标记之前,我没有看到您使用类<ul>
关闭了代码。但是,这显示了另一个问题:您将<li>
元素放在同一标记内的<ul>
元素的同一级别中。
答案 1 :(得分:0)
您使用的是哪个版本的jQuery?我在jQuery网站上找到了这个:
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。