http://twitter.com/username
http://twitter.com/#!/username
http://www.example.com/index.html#print
http://www.example.com/index.html#print
GET /index.html HTTP/1.1Host: www.example.com
http://www.example.com/?color=#fff
GET /?color= HTTP/1.1Host: www.example.com
http://example.com/?color=%23fff
http://www.example.com/index.html#location1
http://www.example.com/index.html#location2
window.onhashchange = func;<body onhashchange="func();">window.addEventListener("hashchange", func, false);
http://twitter.com/#!/username
http://twitter.com/?_escaped_fragment_=/username
一下小例子:
<div class="setItems">
<div class="setFold setUnfold" rel="base" >
<h2>修改密码</h2>
</div>
<div style="display: block;" class="setItemsInfo">
<div class="data"><!-- 修改密码 begin -->
<ul>
<form action="{:U('home/Account/doModifyPassword')}" method="post" class="form_validator" id="regform">
<li>
<div class="left alR" style="width: 15%;">原始密码:</div>
<div class="left" style="width: 50%;">
<div class="left mr5"><input name="oldpassword" type="password" class="text" style="width:200px;" onfocus="this.className='text2'" onblur="this.className='text'" /></div>
</div>
</li>
<li>
<div class="left alR" style="width: 15%;">新密码:</div>
<div class="left" style="width: 50%;">
<div class="left mr5"><input name="password" type="password" class="text" style="width:200px;" onfocus="this.className='text2'" onblur="this.className='text'" /></div>
</div>
</li>
<li>
<div class="left alR" style="width: 15%;">确认密码:</div>
<div class="left" style="width: 50%;">
<div class="left mr5"><input name="repassword" type="password" class="text" style="width:200px;" onfocus="this.className='text2'" onblur="this.className='text'" /></div>
</div>
</li>
<li>
<div class="left alR" style="width: 15%;"> </div>
<div class="left" style="width: 50%;"><input type="submit" class="btn_b" value="保存" /></div>
<div class="left" style="width: 20%;"> </div>
<div class="left" style="width: 15%;"> </div>
</li>
</form>
</ul>
</div><!-- 修改密码 end -->
</div>
</div>
<!-- 修改密码 -->
<div class="setItems">
<div class="setFold" rel="email" >
<h2>修改帐号</h2>
</div>
<div style="display:none;" class="setItemsInfo">
<div class="data"><!-- 修改密码 begin -->
<ul>
<li>
<div class="left alR" style="width: 15%;">原始Email:</div>
<div class="left" style="width: 50%;">
<div class="left mr5"><input id="oldemail" type="text" class="text" style="width:200px;" onfocus="this.className='text2'" onblur="this.className='text'" /></div>
</div>
</li>
<li>
<div class="left alR" style="width: 15%;">新Email:</div>
<div class="left" style="width: 50%;">
<div class="left mr5"><input id="newemail" type="text" class="text" style="width:200px;" onfocus="this.className='text2'" onblur="this.className='text'" /></div>
</div>
</li>
<li>
<div class="left alR" style="width: 15%;"> </div>
<div class="left" style="width: 50%;"><input type="submit" class="btn_b" value="保存" id="btn_submit" /></div>
<div class="left" style="width: 20%;"> </div>
<div class="left" style="width: 15%;"> </div>
</li>
</ul>
</div><!-- 修改密码 end -->
</div>
</div>
<script>
$(document).ready(function(){
var hs = document.location.hash;
changeModel( hs.replace('#','') );
$('.setFold').click(function(){
if( $(this).attr('class')=='setFold' ){
changeModel( $(this).attr('rel') );
}else{
$(this).removeClass('setUnfold');
$(this).next('.setItemsInfo').hide();
}
location.href='#'+$(this).attr('rel'); //URL地址中的#号后的标签改成当前切换的
})
});
//切换操作模块
function changeModel( type ){
var t = type || 'base'; //使用||的好处是默认为base
$('.setFold').removeClass('setUnfold');
$('.setItemsInfo').hide();
var handle = $('div[rel="'+t+'"]'); //获取的是一个对象
//alert('div[rel="'+t+'"]'); //输出为div[rel="email"]或div[rel="base"]
handle.addClass('setUnfold');
handle.next('.setItemsInfo').show();
}
</script>
按钮的js
$('#btn_submit').attr('disabled','true');
$('#btn_submit').removeAttr('disabled');