2010-08-28 71 views
1
加載頁面

上工作在我的web應用程序,我有它加載其他頁面一個div:$('#main').load('pages/main.php');jQuery腳本不

main.php包括jQuery驗證腳本。這個腳本正在工作,如果我直接去主要的PHP,但不工作,如果我會在我的索引頁上main.php加載使用此頁面。

我該如何解決這個問題?

在此先感謝。

+0

使用Fiddler/Firebug觀看HTTP請求並查看響應。在這裏發佈。 – 2010-08-28 07:19:55

回答

1

我最終使用.livequery()來解決這個問題! :)

看一看。

http://plugins.jquery.com/project/livequery/

包括插件,那麼你就需要這樣的事情在你的index.php

<script type="text/javascript"> 
$(document).ready(function(){ 

      $('#yourInputField') 
       .livequery(function() { 
       $('#yourInputField').YourValidatorPlugin(); 
     }); 
}); 
</script> 
+0

謝謝。但是,我將使用.live() - 這是在livequery的模擬中生成的 – dsplatonov 2010-08-31 09:22:11

0

.load()不回退腳本。這是默認功能的一部分docs

1

爲Inrbob指出的問題是,將內容加載到一個元素將不加載,也不執行腳本元素。申請一個新的腳本到頁面的適當途徑,是落實:

var s = $("<script src='" + script_location_for_validation + "'/>"); 
$("body").append(s); 

這將延遲加載的JavaScript,如果你想用緩存來提高以後頁的速度讓你的代碼,你的頁面(重要負荷)。

另一方面,將您的庫和腳本放在頁面的末尾是非常好的做法,這樣它們不會阻止其他下載或渲染。

+1

我在將所有這些工作應用於所有IE中時遇到了一些麻煩,但我從頭部和身體撤回了腳本;一些是外部文件,一些是內聯的。如果此方法適用於您(即您始終知道要拖動的頁面上有哪些腳本),則可以將代碼添加到.load()回調中,以便在加載數據後立即運行該腳本。 – lnrbob 2010-08-28 07:42:18

+0

不錯的建議 - 謝謝 – dsplatonov 2010-08-28 16:06:32

+0

@lnrbob在我一直致力於IE6的所有項目中,都被認爲是最終被拋棄的磨石。 IE7和IE8應該正確處理它。 @dsplatonov作爲lnrbob暗示,如果您沒有控制請求的另一端的代碼,則此解決方案不會爲您執行任何操作。 – Gabriel 2010-08-28 18:49:09

1

很容易

  1. 保存所有的JavaScript函數中使用main.php在外部文件並將其包含在當前頁面。
  2. 將內容加載到div中。
  3. 調用相應的功能。

它會勉強工作。