Javascript jQuery.fadeIn()工作,但.slideDown()和.animate()不工作

Javascript jQuery.fadeIn()工作,但.slideDown()和.animate()不工作,javascript,jquery,ajax,jquery-animate,slidedown,Javascript,Jquery,Ajax,Jquery Animate,Slidedown,我试图建立一个网站,通过ajax调用加载页面,用ajax响应替换当前的内容。我在URL的末尾添加了一个#和一个页面名,这样人们就可以对页面进行图书标记 www.examplesite.com#主页 www.examplesite.com#示例 www.examplesite.com#examples/example1 www.examplesite.com#examples/example2 我不熟悉jQuery,也不太熟悉JavaScript,但当我转到存储在子文件夹中的页面时,我试图获得

我试图建立一个网站,通过ajax调用加载页面,用ajax响应替换当前的内容。我在URL的末尾添加了一个#和一个页面名,这样人们就可以对页面进行图书标记

  • www.examplesite.com#主页
  • www.examplesite.com#示例
  • 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>

//所有页面都存储在名为“页面”的文件夹或“页面”的子文件夹中
$(文档).ready(函数(){
var myUrl=$(位置).attr('href');
var noPage=myUrl.indexOf('#');
如果(无页面==-1){
location.hash='home';
}
window.onhashchange=函数(){
页面更改();
}
函数pageChange(){
var myUrl=$(位置).attr('href');
var page=myUrl.substring(myUrl.indexOf('#')+1,myUrl.length);
$.get('pages/'+page+'.html',函数(pageHtml){
如果(第页索引of(“/”)!=-1){
$('.main').hide().html(pageHtml).slideDown(400);
}否则{
$('.main').hide().html(pageHtml).fadeIn(400);
}
}); 
};
页面更改();
});
如果我从一个完全错误的方向来处理这个问题,这就是为什么它不起作用的原因,请给我举一个它应该如何工作的例子,为我指出正确的方向。

我会拿这个

            if (page.indexOf('/') != -1) {
                $('.main').hide().html(pageHtml).slideDown(400);
            } else {
                $('.main').hide().html(pageHtml).fadeIn(400);
            }
并重新排列它,以确保您的if语句是正确的

            if (page.indexOf('/') != -1) {
                $('.main').hide().html(pageHtml).fadeIn(400);
            } else {
                $('.main').hide().html(pageHtml).slideDown(400);
            }
如果它现在滑动而不是淡入淡出,则If语句已损坏

我认为

            if (page.indexOf('/') != -1) {
                $('.main').hide().html(pageHtml).slideDown(400);
            } else {
                $('.main').hide().html(pageHtml).fadeIn(400);
            }
并重新排列它,以确保您的if语句是正确的

            if (page.indexOf('/') != -1) {
                $('.main').hide().html(pageHtml).fadeIn(400);
            } else {
                $('.main').hide().html(pageHtml).slideDown(400);
            }

如果它现在滑动而不是褪色,则If语句已损坏

这是怎么回事?这行吗

 var main_div=$('.main');
 main_div.hide();

 $.get('pages/' + page + '.html', function(pageHtml) {
                if (page.indexOf('/') != -1) {
                    main_div.html(pageHtml)
                } else {
                    main_div.html(pageHtml)
                }
            });

 main_div.slideDown(400);

这个怎么样?这行吗

 var main_div=$('.main');
 main_div.hide();

 $.get('pages/' + page + '.html', function(pageHtml) {
                if (page.indexOf('/') != -1) {
                    main_div.html(pageHtml)
                } else {
                    main_div.html(pageHtml)
                }
            });

 main_div.slideDown(400);
明白了

我在我的几个div中使用了cssminheight属性,这样,如果页面上有很多内容,页面就会随着内容自动展开。如果删除min height属性并将其替换为固定高度,则slideDown()可以正常工作

如果其他人有同样的问题,这里有一些链接可获取更多信息: 明白了

我在我的几个div中使用了cssminheight属性,这样,如果页面上有很多内容,页面就会随着内容自动展开。如果删除min height属性并将其替换为固定高度,则slideDown()可以正常工作

如果其他人有同样的问题,这里有一些链接可获取更多信息:

可能CSS中有什么东西阻止了它?尝试禁用
main
类的CSS,然后重试?

可能CSS中有什么东西阻止了它?尝试禁用
main
类的CSS,然后重试?

这不会解决您的问题,但您可以通过替换$(location.attr('href')来减少代码;var page=myUrl.substring(myUrl.indexOf('#')+1,myUrl.length);page=location.hash.substring(1);你介意竖起小提琴吗?谢谢@Sushil:)非常感谢,我会试一试。@Bob加载内容,当你删除.hide()东西时你能看到吗?@MevinBabu是的,我尝试过删除.hide(),但似乎没有帮助,是的,内容加载很好。我将尝试设置一个JSFIDLE,希望它能帮助您解决问题,但您可以通过替换$(location.attr('href')来减少代码;var page=myUrl.substring(myUrl.indexOf('#')+1,myUrl.length);page=location.hash.substring(1);你介意竖起小提琴吗?谢谢@Sushil:)非常感谢,我会试一试。@Bob加载内容,当你删除.hide()东西时你能看到吗?@MevinBabu是的,我尝试过删除.hide(),但似乎没有帮助,是的,内容加载很好。我将尝试设置一个JSFIDLE,希望这会有所帮助。恐怕不会,我的页面仍会使用上述任一项进行更新,但slideDown动画似乎不想启动:(恐怕不会,我的页面仍会使用上述任一项进行更新,但slideDown动画似乎不想启动:(恐怕不会,页面会加载,但没有动画。如果我将.slideDown(400)更改为.fadeIn(400),它会工作……恐怕不会,页面会加载,但没有动画。如果我将.slideDown(400)更改为.fadeIn(400),它会工作。。。