0

1つのdivを表示し、残りを同じページで動的に非表示にするjqueryコードがあります。そして、少し問題があります。ログインページindex.php#loginに直接(URL経由で)アクセスしようとすると、メインページindex.php#homeに返送されます。

これは、ログインが非表示に設定されているために発生します。それで、とにかく私はこれを回避することができますか?

    $('#w').live('click', function(){

        $('#b').css('display','none');
        $('#a').css('display','block');
    });

    $('#x').live('click', function(){
        $('#a').css('display','none');
        $('#b').css('display','block');
    });

<li><a href="#home" id=w>Home</a></li>
<li><a href="#login" id=x>Login</a></li>

<div id=b style="display:none;">

// Login

</div>

<div id=a>

// Main content

</div>

追伸:私の悪い英語でごめんなさい

4

1 に答える 1

0

私はあなたが次のようなことをすることができると思います:

$(document).ready(function() {

  // set all event binding
  $('body').on('click', 'a[href="#home"], a[href="#login"]', function() {
       $('#a, #b').toggle(0);
  });

  // try to fire appropriate event using hash value

  var hash = window.location.hash; // return:  #home  OR #login
  $('a[href="'+ hash +'"]').click();

});

ここからもっと得ることができるかもしれません

ノート

しかし、わからない、なぜあなたはliveイベントが必要なのか。liveイベントは、動的にロードされたコンテンツにイベントをバインドする必要があります。ページの読み込み後にDOMに追加される要素。

ライブデリゲートイベントが本当に必要な場合は、その原因でlive使用する代わりに非推奨にして、jQueryの最新バージョンを使用してみてください。.on()live

必要ないと思われる場合はlive、次のようにイベントハンドラーを簡略化します。

$('a[href="#home"], a[href="#login"]').on('click', function() {
    $('#a, #b').toggle(0);
});
于 2013-03-19T22:19:43.327 に答える