【发布时间】:2012-11-10 15:53:17
【问题描述】:
我正在尝试建立一个网站,通过 ajax 调用加载页面,用 ajax 响应替换当前内容。我在 URL 的末尾添加了 # 和页面名称,以便人们可以为页面添加书签。
- www.examplesite.com#home
- www.examplesite.com#examples
- www.examplesite.com#examples/example1
- www.examplesite.com#examples/example2
我是 jQuery 新手,在较小程度上是 JavaScript,但是当我转到存储在子文件夹中的页面时,我试图获得不同的页面动画。 fadeIn() 在页面和子文件夹中的页面上都可以正常工作,但是我根本无法让 .slideDown() 或 .animate() 工作。这是我的代码的摘录:
<script>
//All pages are stored in a folder called 'pages' or a subfolder of 'pages'
$(document).ready(function(){
var myUrl = $(location).attr('href');
var noPage = myUrl.indexOf('#');
if(noPage == -1) {
location.hash = 'home';
}
window.onhashchange = function() {
pageChange();
}
function pageChange() {
var myUrl = $(location).attr('href');
var page = myUrl.substring(myUrl.indexOf('#') + 1, myUrl.length);
$.get('pages/' + page + '.html', function(pageHtml) {
if (page.indexOf('/') != -1) {
$('.main').hide().html(pageHtml).slideDown(400);
} else {
$('.main').hide().html(pageHtml).fadeIn(400);
}
});
};
pageChange();
});
</script>
如果我是从完全错误的方向来解决这个问题,这就是它不起作用的原因,请随时通过给我一个应该如何工作的例子来指出我正确的方向。
【问题讨论】:
-
这不会解决您的问题,但您可以通过替换 $(location).attr('href'); 来减少代码。 var page = myUrl.substring(myUrl.indexOf('#') + 1, myUrl.length);with page = location.hash.substring(1);
-
您介意设置一个 Fiddle 吗? jsfiddle.net
-
谢谢@Sushil :) 非常感谢,会试一试的。
-
@Bob 内容是否加载,当你删除 .hide() 东西时你能看到它吗?
-
@MevinBabu 是的,我尝试删除 .hide() 但这似乎没有帮助,是的,内容加载正常。我将尝试设置一个 jsfiddle,希望这会有所帮助
标签: javascript jquery ajax jquery-animate slidedown