关于onhashchange事件
副标题[/!--empirenews.page--]
onhashchange 事件是一个新的事件,改事件在location.hash发生改变的时候触发。FF3.6a2, IE 8, Chrome 4.0.206.1均支持该事件。该事件在ajax无刷新页面提交中,能带来更好的用户体验。我们知道,在一个ajax请求中,每次页面更新不能更新地址栏,历史记录也不能记录每次更新的痕迹,地址栏左侧的“前进”和“后退”按钮失去了原有的功能。有了Onhashchange事件,我们在ajax无刷新页面提交的同时,可以很方便的记录每次更新的痕迹。IE8的AJAX Navigations利用该事件放大缩小地图,记录用户访问的痕迹,可查看AJAX Map。 ![]() <ul class="tabTit"> <li><a href="#item1">item1</a></li> <li><a href="#item2">item2</a></li> <li><a href="#item3">item3</a></li> <li class="last"><a href="#item4">item4</a></li> </ul> <div class="tabCon"> <div class="item" id="item1"> 这里是第一个选项 </div> <div class="item hide" id="item2"> 这里是第二个选项 </div> <div class="item hide" id="item3"> 这里是第三个选项 </div> <div class="item hide" id="item4"> 这里是第四个选项 </div> </div> </div> Css代码不再列出,详情可以参考示例页。接下来我们开始构建tab切换效果的函数,利用jQuery,可以很容易的构建我们需要的函数。当然,你也可以使用jQuery自身的tab切换插件。 Copy to Clipboard![]() var title = document.title; function tabSwitch(obj,current){ $(".tabTit li").removeClass("current"); $(current).closest("li").addClass("current"); $(".tabCon .item").hide(); $(obj).show(); window.location.hash = obj; document.title = title + " | " + obj.split("#")[1]; $("#currentObj").html("当前被点击的对象为:" + obj + ""); } 上面的代码中,变量current记录当前被点击的对象,title记录页面的title,以便每次,点击时更新页面的title。每次点击时,将每次点击的对象记录在hash之中。至于触发事件,不过是对比当前hash与window.location.hash,并将新的hash存储到window.location.hash之中。 Copy to Clipboard![]() var hash = window.location.hash; if (hash != current){ current = hash; tabSwitch(hash,$("a[href='" + hash +"']")); } } 最后,在body标签上绑定onhashchange事件: ![]() <script src="js/jquery.address-1.1.js"></script>Html的tab标签做如下修改: <ul class="tabTit"> <li><a href="#item1" rel="address:item1">item1</a></li> <li><a href="#item2" rel="address:item2">item2</a></li> <li><a href="#item3" rel="address:item3">item3</a></li> <li class="last"><a href="#item4" rel="address:item4">item4</a></li> </ul> (编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |