2012-03-19 99 views
-1

我正在尋找一種方法來加載頁面(頁面A)(我也創建 - 所以不是網頁上的外部頁面)動態加載到現有頁面(頁面B)。目標是影響頁面B上使用的Javascript/jquery中頁面A的行爲。 示例:單擊pageA中的按鈕時,我希望頁面B上的Javascript對此做出反應。通過jQuery加載HTML內容

我試圖做到這一點使用jQuery $()load()函數,但是這並不讓我從一個頁面A.調用網頁B的JavaScript的

具體代碼: 我的網頁B包含此:

jQuery(document).ready(function() { 
    jQuery('#mycarousel').jcarousel({ 
     initCallback : carousel_callback 
    }); 
}); 

而且我將添加一個新的標籤,從頁面(A)的旋轉木馬和內容加載到該選項卡的功能。

$('.ref').click(function() { 
     var newTabId = jQuery('#mycarousel').jcarousel('size') + 1; 
     carousel 
       .add(
         newTabId, 
         "<li style='width: 50%;'><div id='tab" + newTabId + "' style='height: auto;'></div></li>"); 
     // load content 
     $("#tab" + newTabId).load("/researchPad" + $(this).attr('id')); 
    }); 

這適用於靜態內容(所以當我在旋轉木馬中有靜態選項卡)。現在我想這也適用於動態添加的選項卡。

作爲建議的反應之一,我嘗試將JavaScript放入一個單獨的文件中,並將主頁面鏈接爲加載到此腳本的頁面。然而,這並不能讓他們分享上下文。

+2

爲什麼不在兩個頁面上包含相同的JavaScript? – jrummell 2012-03-19 14:58:14

+0

我會盡量讓我的問題更具體(當然,我不能在這個時候展示一個例子):頁面B包含一個持有加載頁面的jCarousel。在頁面A中單擊按鈕時,應將新選項卡添加到加載新內容的輪播中。所以我不只是需要頁面B的JavaScript功能,我也需要上下文。這就是爲什麼我試圖尋找一種方法來引用A頁面B的JavaScript'上下文'。 – user485659 2012-03-19 15:11:23

+0

因此,用'.load()'加載你的html(上下文),然後在兩個頁面中引用相同的js頁面。沒有看到一些代碼,它很難完全理解你想要做什麼。 – jrummell 2012-03-19 15:15:40

回答

0

我懷疑這可能是與它:從jQuery文檔負載():

「jQuery使用瀏覽器的.innerHTML屬性來解析檢索文檔,並將其插入到當前文檔。在此過程中,瀏覽器通常會過濾來自文檔的元素,例如< html>,< title>或< head>元素。因此,由.load()檢索的元素可能與文檔不完全相同通過瀏覽器直接檢索「。

您的JavaScript在頁面B中在哪裏?在頭部?

0

jQuery有一個獨立的getScript動態加載JavaScript的方法。

從網頁A刪除你的內嵌代碼,並放置到一個外部JavaScript文件,稱它爲頁。然後,在頁面B,做這樣的事情:

$.load('pageA.html', function(data) { 
    $.getScript('pageC.js'); 
}); 

這麼說,我敢打賭您可以通過在第C重寫代碼完全消除getScript所以它.live DOM元素進行操作,並在網頁B的<head>你.load你的頁面

+0

感謝您的建議,但這不完全是我的意思;我已經在原始問題中描述了確切的問題。 – user485659 2012-03-19 18:06:12

0

之後通常的方式加載pageC.js,嘗試重新綁定你的活動。例如,如果你這樣做

$(button).click(function(){blabla}) 

在加載你的頁面之前,加載.load的按鈕不會受到影響。

我建議你在一個函數中綁定你的事件,然後在.load完成後調用它。但是不要忘記由於雙重執行而解除綁定現有的綁定。