在AJAX控件中使用JQuery并避免冲突

时间:2011-02-22 23:20:40

标签: .net jquery ajax

我在自定义AJAX用户控件(本土工具包的一部分)中使用JQuery,我需要确保主机页面上存在JQuery。页面上可能有多个控件实例,某些控件可能需要使用不同版本的JQuery。

目前我正在使用以下代码在控件初始化时加载JQuery ...

Page.ClientScript.RegisterClientScriptInclude(Page.GetType(), "jquery-1.4.4.min.js", this.ResolveUrl("TextControlPlugin/lib/jquery-1.4.4.min.js"));

这是有效的,因为scriptmanager处理不会将同一脚本的多个副本放入页面中。

...问题

  • 我无法静态使用JQuery 呼叫页面(我可能没有 控制页面但需要使用 JQuery)
  • 剧本管理员似乎 只处理重复的URL和我 将需要从中部署它 可能有2个不同的URL( 调用页面的副本和控件 拷贝)

那么,有没有办法将一个版本的JQuery隔离到我的控件上下文中,它与调用页面中的任何JQuery使用不相互影响?编写页面的开发人员可能无法访问控件的内部。

我已经看过JQuery.noConflict()但似乎无法让它正常工作 - 我相信我的脚本被注入页面的顺序出现问题 - 我一直认为JQuery是未定义的错误。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

仅仅依赖于jQuery并将其放入基础MasterPage中会有问题吗?这样,始终可以确保在页面中。

我建议只使用一个版本的jQuery,因为它会很快混淆哪个变量引用哪个版本的jQuery。将true传递给$.noConflict(true)会将jQuery引用分配给_jQuery_$