JQuery:多个switch语句互相取消

时间:2013-04-05 20:01:48

标签: jquery switch-statement case

一次遇到多个switch语句有问题:

$(document).ready(function(){
    $('#menu').children('span').click(function(){
        whichsub = $(this).attr('id');
        switch (whichsub)   {
            case 'menu1':
            $('#submenu').load('menus/submenu1.html');
            break;
            case 'menu2':
            $('#submenu').load('menus/submenu2.html');
            break;
        };
        if ( $('#submenu').css('left') !== '150px' ) {$('#submenu').animate({left: '150px'}, 300);}
    });
    $('#submenu').children('span').click(function(){
        var whichcon = $(this).attr('id');
        switch (whichcon)   {
            case 'submenu1':
            $('#demopanel').load('content/profile.html');
            break;
            case 'submenu2':
            $('#demopanel').load('content/portfolio.html');
            break;
        };
        if ( $('#demopanel').css('marginLeft') !== '300px' ) {$('#demopanel').animate({marginLeft: '300px'}, 1000);}
    });
});

顶部开关更改子菜单并有条件地将其滑出,底部更改内容("#demopanel")。每个都可以自己运行,但是当我同时启用时,第二个都无法工作 - 它就像脚本已经停止一样,因为$('#submenu').children('span').click(function(){之后发出的警报没有返回任何内容。

任何可能出错的想法?我需要解开一些东西吗?

感谢。

2 个答案:

答案 0 :(得分:0)

委托子菜单点击,因为看起来你正在使用on加载动态内容..

$('#submenu').on('click','span',function(){
  ...

})

link了解有关委派活动的更多信息

答案 1 :(得分:0)

您的子菜单似乎是动态加载的,因此必须使用委托事件。试试这个..

  $('body').on('click','#submenu span',function(){
  ...

})