ASP.NET AJAX $find 方法在 jQuery $(document).ready() 方法中使用时失败
Posted
技术标签:
【中文标题】ASP.NET AJAX $find 方法在 jQuery $(document).ready() 方法中使用时失败【英文标题】:ASP.NET AJAX $find method failes when used in jQuery's $(document).ready() method 【发布时间】:2011-09-21 03:01:41 【问题描述】:我正在尝试使用 ASP.NET AJAX 的客户端框架查找树。在 DOM 准备好之后,我还使用 jQuery 来执行任何 javascript 操作。我的代码是这样的:
$(function()
var tree = $find('treeId');
);
这里,tree 就是空的。但是,当我尝试通过单击其中一个元素来查找树时,它不为空:
$(function()
$('saveButton').click(function()
var tree = $find('treeId');
):
);
【问题讨论】:
treeId
在标记代码中还是稍后通过 JavaScript 加载?你能在ready
-function 中找到任何其他 id 吗?
是的,treeId
是我的树的 ID(在服务器上设置的任何内容,它都是静态的)。确实 Id 是“pagesTree”。
@Dynamicus,@user811785,是的,这就是我的意思。 “ID 为treeId
的控件是否在静态结构中且未动态加载”。也许我不是那么清楚..
是的,当然,它在页面的静态结构中(在标记中定义,而不是通过 AJAX 获取)。
【参考方案1】:
这对 Telerik 控件很有用:
$telerik.$(document).ready(function ()
var tree = $telerik.$find("<%=RadTreeView1.ClientID%>");
);
看到这个http://www.telerik.com/help/aspnet-ajax/introduction-using-jquery.html
【讨论】:
不,$('#treeId') 返回一个 jQuery 对象。我需要一个 ASP.NET AJAX 的对象。 $find('treeId') 返回一个强类型对象,可用于进一步操作 ASP.NET 的树。 试过了,但没有结果。我使用 ASP.NET 4 ClientIDMode 设置为静态。因此,从技术上讲,没有必要使用内联 ASP.NET。我可以硬编码树的 ID,例如:$find('pagesTree')
您的标记中有 jQuery 参考吗? Afaik 一些 Telerik 控件已经包含它,因此它们可能会发生冲突。
是的,我还有另一个要单独加载的 jQuery 引用。但是当我删除它时,我仍然遇到了问题。无论如何,好点。谢谢
很好的答案。太感谢了。你治好了我长期的头痛:)。关键是,当您在 Telerik 的 jQuery 之外包含 jQuery 时,您应该以两种不同的方式引用它们。带有$
的jQuery,以及带有$telerik.$
的Telerik 的jQuery。【参考方案2】:
尝试使用 ASP.NET Ajax DOM Ready。
Sys.onReady(function()
//DOM is ready to access and use
var tree = $find('treeId');
);
【讨论】:
我这样做了,但没有用。实际上,我正在使用 Telerik RadTree,它似乎没有将 Sys 注入页面。 @user811785:对不起。我没有使用过辐射控制。你为什么不试试他们的论坛?【参考方案3】:我之前遇到过 Telerik 控件和 ClientIDMode="Static"
的问题。我只是删除了这个属性并使用了$find('<%= Radtree1.ClientID %>')
,它起作用了。
编辑: 从接受的答案开始,您可以通过将默认 $ 指向 Telerik $ 来设置默认 $ 以使用 jquery。
window.$ = $telerik.$
如果您在 site.master(或全球任何地方)上执行此操作,您将能够正常使用 jquery。
【讨论】:
好吧,我也试过了。还是没有结果。我认为我们编写服务器端代码的方式应该没有区别。因为重要的是内联的 ASP.NET 将被执行并将一个字符串发送到浏览器。以上是关于ASP.NET AJAX $find 方法在 jQuery $(document).ready() 方法中使用时失败的主要内容,如果未能解决你的问题,请参考以下文章
在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功:
Bootstrap javascript 链接在 Umbraco 框架 (asp.net) 中不起作用