AJAX,jQuery-如果设置了$#u GET[';var';],如何设置一个容器的动画并淡入另一个加载新内容的容器?

AJAX,jQuery-如果设置了$#u GET[';var';],如何设置一个容器的动画并淡入另一个加载新内容的容器?,jquery,ajax,function,get,hyperlink,Jquery,Ajax,Function,Get,Hyperlink,我在/pages/home.php中有一个index.php包含home.php。如果单击该表特定列中的元素(日志文件),则包含#pickups-表的.main-容器将.animate()加载到特定大小,新内容将加载到.pickup-容器中,并在.main-容器的正下方淡入 现在我确实想支持直接链接,因此如果您链接到网站.tld/?pickup=name我希望#pickups-表成为动画(),就像您在#pickups-表中单击一个日志文件元素一样 您可以在此处尝试以下示例: 正常链接(您必须单击

我在
/pages/home.php
中有一个
<如果没有设置其他页面,则默认情况下code>index.php包含
home.php
。如果单击该表特定列中的元素(日志文件),则包含
#pickups
-表的
.main
-容器将
.animate()
加载到特定大小,新内容将加载到
.pickup
-容器中,并在
.main
-容器的正下方淡入

现在我确实想支持直接链接,因此如果您链接到网站.tld/?pickup=name我希望
#pickups
-表成为
动画()
,就像您在
#pickups
-表中单击一个日志文件元素一样

您可以在此处尝试以下示例:

  • 正常链接(您必须单击日志文件):
  • 直接链接(我希望动画在设置了
    $\u GET['pickup']
    时自动发生,就像在表的logfiles列中单击日志文件时一样):
  • 以下是我到目前为止得到的信息:

    jQuery,下面的代码位于
    $(document).ready(function(){})
    范围内

        var mainIsCollapsed = 0;
        var mainLastHeight = 0;
    
        var $_GET = {};
        document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function() {
            function decode(s) {
                return decodeURIComponent(s.split("+").join(" "));
            }
            $_GET[decode(arguments[1])] = decode(arguments[2]);
        });
        //if direct link was clicked
        if($_GET['pickup'] != null) {
            var pickup = $_GET['pickup'];
            alert('var pickup: ' + pickup);
            loadPickup(pickup);
        }
    
    
    
        //if td element is clicked
        $('#pickups td:first-child').click(function() {
            loadPickup($(this).attr('name'));
        });
    
    
        //fade out content and animate 'main' to its normal size
        $('div.main').click(function() {
            if($(':animated').length)
                return false;
            if(mainIsCollapsed == 1) {
                $('div.pickup').fadeOut(250);
    
                $(this).animate({
                    height: mainLastHeight
                }, 600, function() {
                    mainIsCollapsed = 0;
                });
            }
        });
    
    
    
    
        //animate table and fade in content
        var loadPickup = function(pickup) {
            alert(pickup);
    
            if($(':animated').length)
                    return false;
    
            if(mainIsCollapsed == 0) {
                mainLastHeight = $('div.main').height();
    
                //collapse main frame
                $('div.main').animate({
                    height:'50px'                    
                }, 600, function() {
                    mainIsCollapsed = 1;
                });
                //load content
                $('div.pickup').load('/pages/pickup.php?pickup=' + pickup, function() {
                    //fade in
                    $('div.pickup').fadeIn(300);
                    //some other code here for tooltips and such
                });
        }
    
    问题是,当使用直接链接时,函数
    loadPickup(pickup)
    从未执行过(消息框
    alert(pickup)
    从未弹出,似乎所有jQuery脚本都停止工作)

    文件:

  • index.php
    加载上面的jQuery/javascript
  • index.php
    包括
    /pages/home.php
  • index.php
    包含加载新内容后将显示的
    div.pick
  • /pages/pickup.php
    是加载到
    div.pickup
  • /pages/home.php
    包含
    .main
    容器(要设置动画的容器),在该容器中,
    #pickups
    表位于该容器中
  • 编辑

    我试过调用
    LoadPick('CTFCL-20130816-0132-openfire_lowgrens')$(document).ready()
    函数中调用,它也不会在那里调用它。相反,所有jQuery似乎都停止工作


    我做错了什么?

    这个问题的解决方法相当简单;我习惯于用obj-c和Java编程。如果我将
    loadpick()
    函数移动到
    $(document.ready()
    的顶部,它就会工作。如果它是在调用下面定义的,那么jQuery在尝试执行它时还不知道该函数