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('&lt;%= Radtree1.ClientID %&gt;'),它起作用了。

编辑: 从接受的答案开始,您可以通过将默认 $ 指向 Telerik $ 来设置默认 $ 以使用 jquery。

window.$ = $telerik.$

如果您在 site.master(或全球任何地方)上执行此操作,您将能够正常使用 jquery。

【讨论】:

好吧,我也试过了。还是没有结果。我认为我们编写服务器端代码的方式应该没有区别。因为重要的是内联的 ASP.NET 将被执行并将一个字符串发送到浏览器。

以上是关于ASP.NET AJAX $find 方法在 jQuery $(document).ready() 方法中使用时失败的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功:

ASP.NET AJAX 中的 $create 函数是啥?

Bootstrap javascript 链接在 Umbraco 框架 (asp.net) 中不起作用

ASP.NET MVC 实现AJAX跨域请求方法《1》

使用 ajax 和 webmethod 在 asp.net 中使用 web 方法和 ajax 级联下拉列表绑定下拉数据

ASP.NET Core - 在没有 Ajax 的 javascript 中调用控制器方法