【问题标题】:ASP.NET AJAX $find method failes when used in jQuery's $(document).ready() methodASP.NET AJAX $find 方法在 jQuery $(document).ready() 方法中使用时失败
【发布时间】: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 获取)。

标签: jquery asp.net asp.net-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 将被执行并将一个字符串发送到浏览器。
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2010-12-17
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多