2010-07-21 121 views
0

我使用ASP.NET MVC框架ready事件,jQuery和Ajax調用基於客戶端輸入做一些局部視圖渲染,我的問題是,一些腳本需要由部分視圖依賴於由jQuery引發的ready事件。動態加載基於jQuery腳本和

腳本,既有外部,並在視圖被加載沒有問題,但隨着頁面已加載,就緒事件從來沒有發射。

有沒有辦法預先處理(使用$.ajax與它的async屬性設置爲false加載),並做一些獲得就緒事件觸發腳本?

無論是或應該尋找一種方式來通知主頁有一個需要運行的方法,換句話說就是創建一個框架,當它們從服務器使用Ajax被拉動並動作時動態地調用初始化方法並工作當他們作爲頁面的一部分下來時,準備好了嗎?

感謝,

基隆

+2

如果嘗試將某個函數綁定到ready事件,例如'$(函數);'或'$(document).ready(函數);'事件已經*已經被解僱了(它不是*真正的事件)......你的函數立即執行。 「已經被解僱」的事件不是問題......如果腳本沒有運行,您的腳本根本不會加載。 – 2010-07-21 21:50:20

+0

可以通過調用$ .ajax從服務器下載腳本,或者使用append方法(取決於它是外部腳本還是部分視圖的一部分)將腳本插入到文檔中。你是說準備好的事件應該以任何一種方式發射......? – Kieron 2010-07-21 21:51:07

+1

是在文檔準備就緒後,任何添加到文檔的事件都會立即觸發。 – redsquare 2010-07-21 22:51:46

回答

0

事實證明,問題是我(的標籤問題的順序)。 redsquare幫助對問題進行分類/指引我朝着正確的方向發展 - 所以功勞就歸功於他。

有關完整詳細信息,請參閱問題的評論。

0

你需要準備觸發事件,因爲你需要附加行爲你剛纔裝什麼?

如果是這樣,您可以使用.live()函數或livequery插件。

與這兩個你可以預先定義根據選擇的選擇相匹配的東西是否不存在或不行爲。匹配項目加載時,它們會自動承擔行爲。

對於更復雜的事情,livequery插件會觸發一個事件,讓您知道添加了與您的選擇器相匹配的新內容,讓您可以運行任何您需要的代碼。 這將讓你保留所有相關的代碼在一個.js文件中,而不是在一堆部分視圖之間傳播。

內置的現場()函數: http://api.jquery.com/live/

的的liveQuery插件: http://plugins.jquery.com/project/livequery/