0

我目前遇到 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 滑动切换:

<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 时,什么也没有发生。

很奇怪,如果我只是用上面三个页面的源代码制作一个页面,它就可以工作。

我究竟做错了什么?

提前致谢。

4

2 回答 2

2

你应该更换:

$(this).next(".submenu").slideToggle(500);

经过

$(this).children(".submenu").slideToggle(500);

(接下来在同级调用下面的标签)

编辑 :

我有点盲目,我没有看到你在用你的子菜单.more打开标签之前关闭了标签<ul>。但是,这向我展示了另一个问题:您将元素放在与同一标签内的元素<li>相同的级别。<ul>

于 2012-08-05T11:37:52.083 回答
0

您使用的是哪个版本的 jQuery?我在 jQuery 网站上找到了这个:

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。

于 2012-08-05T11:39:36.450 回答