2009-06-08 40 views
4

我有沒有加載在asp用戶控件中的jquery的問題。jquery用戶控件

我想點擊一個複選框時,只需添加單擊事件。

這裏是我的JavaScript文件

$(document).ready(function() { 
    var arr = jQuery(":checkbox[id*='drpAccountType']"); 
    for (i = 0; i < arr.length; i += 1) { 
     $("#" + arr[i].id).click(function() { alert(this.id) }); 
    } 
}); 
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

用戶控制預渲染事件:

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 
     ScriptManager.RegisterClientScriptInclude(Me, Me.GetType, "CheckboxdropdownScript", ResolveUrl("~/Scripts/CheckBoxDropDown.js")) 
End Sub 

的腳本被加載罰款的jQuery的任何使用返回undefined。然後只有當頁面加載時,我可以執行螢火蟲commande行相同的代碼。 jquery庫被加載到主頁面中。

每當我使用jQuery一個asp的用戶控件中,我總是發現問題,我總是要圍繞破解得到它的工作。我嘗試在stackoverflow中的所有條目,但我從來沒有找到一個作爲一般解決方案。

沒有人找到一個簡單的解決方案來使用jQuery與母版頁,用戶控制在asp.net 如果有人可以分享這些有價值的信息,我將不勝感激。

我的經理是即將從應用程序拖放jQuery的,因爲我們總是腰大量的時間只是爲了找到一個解決辦法把它與用戶的控制工作。

請幫幫忙,我喜歡jQuery和我真的想使用它的客戶端腳本。

問候

回答

5

腳本可能會得到插入到jQuery庫之前的頁面。 (您可以通過檢查頁面的HTML輸出來驗證。)

當腳本文件內聯執行JS時,尤其是當JS依賴於其他庫時,最安全的方法是使用RegisterStartupScript而不是RegisterClientScriptInclude。如果您使用this overload of RegisterStartupScript,則可以構建對同一個外部JS文件的引用,並且它將在正確的位置運行。

作爲一種替代方案,您可以在用戶控件中使用ScriptManagerProxy中的<asp:ScriptReference/>標籤,而不是在Page_Load或Page_Init中註冊該腳本;根據我的經驗,這些腳本是在主頁面的腳本之後添加的。

+0

打我給它;) – 2009-06-08 23:01:27

1

這不正是一個直接的答案,但這裏有一些jQuery的ASP.net控件,可以幫助:(查找有關回調位)

http://clipperhouse.com/jQuery/

此外,您可能如果您只需將所有複選框的類名稱用作選擇器,則不需要「for」循環。