2016-07-11 34 views
1

當單擊create按鈕時,我將彈出的局部視圖CREATE顯示爲彈出式視圖。呈現部分視圖時調用javascript函數

這意味着動態地將一個div附加到按鈕單擊的主視圖上。

這個div生成後,所有的元素都加載了,之後我想調用javascript函數。

我能找到的所有答案都是使用​​事件,但我的情況是不同的。我不加載使用("#div").load(URL, function(){});我的div局部視圖格生成動態

請提出一些幫助

+1

你是什麼意思的「動態生成」?你在JS中創建div,然後將其附加到頁面的主體? –

+0

只需在追加/插入div後推遲您想要運行的代碼。它會讓DOM有時間讓div用於其他代碼。這假定你想運行的代碼影響div。 – Shilly

回答

1

JavaScript是同步執行。如果您使用jQuery構建「視圖」,然後將其插入到DOM中,那麼只需在將標記插入到DOM後執行「發佈後渲染」代碼即可。

$('#myContainer').append(someMarkup); 
execSomePostRenderFunction(); 

如果您正在使用AJAX來加載來自服務器的局部視圖/ html內容,那麼你會使用load()功能,並把你的帖子在回調渲染代碼。

$('#myContainer').load('route/to/Partial', execSomePostRenderFunction); 

,或者您可以使用匿名函數:

$('#myContainer').load('route/to/Partial', function(){ 
    //...do something here 
}); 

你的問題是有點混亂,因爲你有問題標籤AJAX,但說你是不是加載局部視圖。你也可能想指定你正在使用的MVC框架,這樣有人可以給你更有針對性的指導。例如,ASP.NET MVC中的部分視圖是完全服務器端的技術,並且在頁面加載後呈現局部視圖的唯一方法(就像在按鈕單擊事件上一樣)是通過ajax和函數函數(你也可以使用$.get()$.ajax(),但load()更容易;這就是它被創建的原因)。