我有一个jquery代码来显示一个div并在同一页面上动态隐藏其余的div。即时通讯有一点问题,当我只尝试直接访问(通过url)到登录页面index.php #login im发送回主页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:抱歉我的英文不好
答案 0 :(得分: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();
});
您可以从 here获取更多信息。
但不确定,为什么你需要live
事件。 live
事件需要将事件绑定到动态加载的内容,即。页面加载后附加到DOM的元素。
如果您确实需要一个实时委托事件,那么代替live
使用.on()
因为该原因live
已弃用并尝试使用jQuery最新版本。
如果您认为不需要live
,那么请简化事件处理程序,如:
$('a[href="#home"], a[href="#login"]').on('click', function() {
$('#a, #b').toggle(0);
});