1

一度に複数の 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") を変更します。それぞれが単独で動作しますが、両方を有効にすると、2 番目は動作しなくなります。後に配置されたアラート$('#submenu').children('span').click(function(){が何も返さないため、スクリプトが停止したかのように動作します。

これがうまくいかない可能性のあるアイデアはありますか?何かをアンバインドする必要がありますか?

ありがとう。

4

2 に答える 2

0

サブメニューが動的にロードされているように見えるため、委任されたイベントを使用する必要があります。これを試して..

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

})
于 2013-04-05T20:59:16.327 に答える