0

我有一个 jquery 代码来显示一个 div 并在同一页面上动态隐藏其余部分。我遇到了一个小问题,当我只尝试直接(通过 url)访问登录页面 index.php#login 时,我会发送回主页 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>

Ps:对不起我的英语不好

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 回答