2009-06-08 50 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”循环。