2012-03-18 24 views
-1

我遇到了,我通過jQuery的負載接入主要的Javascript

$("#tab").load(/a/relative/pad); 

的問題是,我無法訪問JavaScript中的原環境中加載頁面原型的一個問題,是有辦法解決這個問題?

+2

「在原始環境中訪問Javascript」是什麼意思? – Pointy 2012-03-18 16:35:35

+2

你的問題不清楚。你是什​​麼意思_「在原始環境中訪問Javascript?」_ – 2012-03-18 16:36:27

+0

因此,我有一個頁面A,通過$(..)。load。()函數(頁面B)加載內容。如果頁面B中的JavaScript函數調用了頁面A中聲明的函數,則不會調用該函數。我希望這能讓問題更清楚? – user485659 2012-03-18 16:43:26

回答

0

JavaScript中的加載文檔的內容不會被解僱。你可以做的是有一個負載火的Javascript方法,你需要的回調。

如果您在加載後需要調用的函數取決於您從加載中返回的數據,則可以在加載回調期間獲取所需的參數。

$("#tab").load("https://stackoverflow.com/a/relative/pad", function(){ 
    //find your parameter 
    var parameter = $("#parameter", "#tab"); 
    //call your callback method 
    callback(parameter); 
}); 

如果不需要額外的參數,使回調:

$("#tab").load("https://stackoverflow.com/a/relative/pad", function(){ 
    //call your callback method 
    callback(parameter); 
}); 

或者,如果你不希望其他人有一個匿名函數:

$("#tab").load("https://stackoverflow.com/a/relative/pad", callback); 

在所有這些情況callback是功能存在於頁面A

或者,雖然這是不是最佳做法,您可以在頁面B上有一段隱藏的文本,它實際上是一個腳本塊,您可以在該腳本上調用ecal()

$("#tab").load("https://stackoverflow.com/a/relative/pad", function(){ 
    //get the block of script you need to run 
    var scriptToRun = $("#hiddenScriptBlock", "#tab"); 
    //run the script 
    eval(scriptToRun); 
}); 
+0

我不太確定你的意思,這是否可以撥打從B頁到A頁的電話? – user485659 2012-03-19 14:13:36

+0

否。該呼叫仍來自頁面A,但該呼叫在加載頁面B之前不會進行。你能提供更多關於你正在嘗試做什麼的細節嗎? – Fisch 2012-03-19 14:17:03

+0

感謝您的回覆。目前我無法給出我想要達到的具體例子,但我會盡我所能來形容它。 我有一個jCarousel,我在其中加載動態內容(我生成的頁面)。要在此輪播中填充「選項卡」,我使用$()。load()函數,該函數提供了有問題的問題。有沒有其他的方式來加載運行時HTML會繞過這個問題? – user485659 2012-03-19 14:33:53