2012-01-05 73 views
0

我正在创建一个应用程序,其中页面内容被更改并通过AJAX(和hashchange jQuery脚本)动态替换。出于某种原因,在动态更改的AJAX内容中,选择表单选项没有显示出来。例如这里:选择选项没有显示

http://socialbungy.com/newsite/sweeps_temp_facebook/TAB_TEMP1/#enter.php

但是,如果我运行页面,没有装载/改变通过AJAX的内容(除去在URL中的#标记),选择表单元素的作品,因为它是应该的。

http://socialbungy.com/newsite/sweeps_temp_facebook/TAB_TEMP1/enter.php

这是我的命!请帮忙。从来没有遇到过这样的问题。甚至不知道从哪里开始。但这里是我认为的动态脚本是问题。虽然找不到与选择框的任何冲突。是什么赋予了?

$(function() { 

var newHash  = "", 
    $mainContent = $("#appContent"), 
    $pageWrap = $("#page-wrap"), 
    baseHeight = 0, 
    $el; 

$pageWrap.height($pageWrap.height()); 
baseHeight = $pageWrap.height() - $mainContent.height(); 

    $("nav").delegate("a", "click", function() { 
     window.location.hash = $(this).attr("href"); 
     return false; 
    }); 
    $("#buttonWrap").delegate("a", "click", function() { 
     window.location.hash = $(this).attr("href"); 
     return false; 
    }); 

$(window).bind('hashchange', function(){  
    newHash = window.location.hash.substring(1);   
    if (newHash) { 
     $mainContent 
      .find("#guts") 
      .slideToggle(500, function() { 
       $mainContent.hide().load(newHash + " #guts", function() { 
        $mainContent.slideToggle(500, function() { 
         $pageWrap.animate({ 
          height: baseHeight + $mainContent.height() + "px" 
         }); 
        }); 
        $("nav a").removeClass("current"); 
        $("nav a[href="+newHash+"]").addClass("current"); 

        //RE-FIRE OTHER SCRIPTS ON AJAX CONTENT LOAD 

        //Phone Field Format 
        $(function() { 
         $("#phone").mask("(999) 999-9999",{placeholder:" "}); 
        }); 

       }); 
      }); 
    };       
}); 

$(window).trigger('hashchange'); 

});

+0

哈,没有大呼小叫哥们,如果我是它会是我自己。不是我要求帮助的人。 :) – 2012-01-05 21:09:31

+0

这只是一个疯狂的猜测,但是可能是因为你的页面被服务器解释为纯HTML,而不是PHP?在URL的哈希部分有.php扩展名不会触发它被服务器解释为php。也许如果你使用的主页是HTML文件,你可以改为PHP文件。 – 2012-01-05 21:12:31

+0

这并越过我的脑海里,但我使用这个网页,这是php以及: http://socialbungy.com/newsite/sweeps_temp_facebook/TAB_TEMP1/#index.php – 2012-01-05 21:17:16

回答

1

您的服务器响应看起来完全正确,但是在插入DOM之后,您的select元素都会变形。我的猜测是load()+ parse-selector是罪魁祸首。与$.ajax试试吧,这样的事情:

$(function() { 

var newHash  = "", 
    $mainContent = $("#appContent"), 
    $pageWrap = $("#page-wrap"), 
    baseHeight = 0, 
    $el; 

$pageWrap.height($pageWrap.height()); 
baseHeight = $pageWrap.height() - $mainContent.height(); 

    $("nav").delegate("a", "click", function() { 
     window.location.hash = $(this).attr("href"); 
     return false; 
    }); 
    $("#buttonWrap").delegate("a", "click", function() { 
     window.location.hash = $(this).attr("href"); 
     return false; 
    }); 

$(window).bind('hashchange', function(){ 
    newHash = window.location.hash.substring(1); 
    if (newHash) { 
     $mainContent 
      .find("#guts") 
      .slideToggle(500, function() { 
       $mainContent.hide(); 
       $.ajax({ 
        url: newHash, 
        dataType: 'html', 
        success: function(data) { 
         $mainContent.html($(data).find('#appContent').html()); 
         $mainContent.slideToggle(500, function() { 
          $pageWrap.animate({ 
           height: baseHeight + $mainContent.height() + "px" 
          }); 
         }); 
         $("nav a").removeClass("current"); 
         $("nav a[href="+newHash+"]").addClass("current"); 

         //RE-FIRE OTHER SCRIPTS ON AJAX CONTENT LOAD 

         //Phone Field Format 
         $(function() { 
          $("#phone").mask("(999) 999-9999",{placeholder:" "}); 
         }); 
        } 
       }); 
      }); 
    } 
}); 

$(window).trigger('hashchange'); 

}); 

编辑:全码答案

+0

嗯,你的代码无法正常工作。但是我可能错误地实现了它。另外我没有使用jQuery 1.7。你能举一个你提到的定期成功回调的例子吗?完整的脚本?编辑了 – 2012-01-05 21:52:01

+0

。试试那个。 – glortho 2012-01-05 21:57:53

+0

我还看到'select'通过ajax/load自动关闭标记从服务器返回:'