2013-02-26 94 views
1

我試圖將JavaScript加載到已通過AJAX生成的div中,並使用外部PHP文件填充。將JavaScript加載到AJAX生成的div

這裏是我使用的加載AJAX DIV導航,我的PHP內容:

<div id="portfolioContent"> 
    <div id="portfoliotabContainer"> 
    <ul id="portfolioTabs"> 
     <li><a id="dashboardTab" href="./portfolio/portfoliocontent/dashboard.php">Dashboard</a></li> 
     <li><a id="casedetailsTab" href="./portfolio/portfoliocontent/casedetails.php">Case Details</a></li> 
     <li><a id="correspondenceTab" href="./portfolio/portfoliocontent/correspondence.php">Correspondence</a></li> 
     <li><a id="pleadingTab" href="./portfolio/portfoliocontent/pleading.php">Pleading</a></li> 
     <li><a id="discoveryTab" href="./portfolio/portfoliocontent/discovery.php">Discovery</a></li> 
     <li><a id="expensesTab" href="./portfolio/portfoliocontent/expenses.php">Expenses</a></li> 
     <li><a id="indexTab" href="./portfolio/portfoliocontent/docindex.php">Document Index</a></li> 
    </ul> 
    </div> 

我需要的超級鏈接加載,並填寫所產生的股利,還調用外部JavaScript文件,所以我的腳本在生成的div內工作。

這裏是我的腳本:

$(function() { 
    $("#portfolioTabs li a").live("click", function() { 
    var pagecontent = $(document.createElement("div")); 
    pagecontent.load(
    $(this).attr("href")); 
    $(".insideContent").html(pagecontent); 
    $(".portfolioContent").animate({ 
     height: "110%" 
    }); 
    $(".insideContent").animate({ 
     bottom: "0px" 
    }); 
    return false; 
    }); 
}); 

我看着這個我明白,我可以加載動態是,但我不能確定的最簡單的方法來實現這一目標。

回答

1

問題似乎是,當內容尚未加載時,您將內容分配給其他元素。

您可以使用load回調函數爲:

pagecontent.load($(this).attr("href"), function() { 
     // this gets executed when the `load` is complete 
     $(".insideContent").html(pagecontent);  

     $(".portfolioContent").animate({      
      height: "110%"        
     });             
     $(".insideContent").animate({ 
      bottom: "0px" 
     }); 
}); 
+0

我不完全確定如何實現這一點。對於像這樣的高級JavaScript,我相當薄弱。還有什麼指示? – user2109237 2013-02-26 02:02:06

+0

@ user2109237不,這是你所需要的,你將內容加載到'pagecontent'中,當完成時(回調函數),將它加載到'.insideContent'中。沒有別的東西需要改變/做。 – jeroen 2013-02-26 14:04:34

0

你應該使用類似$.ajax。這允許你在沒有頁面重載的情況下將內容異步加載到頁面中,這聽起來像你想要的。

在事件處理程序,你可能會想是

var url = $(this).attr("href"); 
$.ajax({ 
    url: url, 
    success: function(data) { 
     $(".insideContent").html(data); 
    } 
}); 

需要注意的是依賴於數據加載一切都必須放在匿名函數,我更新HTML。

+0

_請注意,所有依賴於數據加載的內容都必須放在匿名函數中,我將更新html._ 我不完全確定您的意思 - 請您詳細說明一下嗎? – user2109237 2013-02-26 02:18:04

+0

我已將'success'屬性設置爲匿名函數。當jQuery成功收到服務器的響應時,將運行此函數中的代碼。因此,依賴於該數據的所有代碼(在響應中)需要位於匿名函數中(或由其調用) – compid 2013-02-27 06:33:31