【问题标题】:ASP.Net Ajax $find() Jquery EquivalentASP.Net Ajax $find() Jquery 等效项
【发布时间】:2009-12-04 19:52:03
【问题描述】:

是否有与 ASP.Net Ajax 的 $find() 函数等效的 JQuery?

$() != $find()

【问题讨论】:

    标签: asp.net jquery ajax


    【解决方案1】:

    没有因为$find返回与DIV元素相关的AJAX组件,而不是DOM元素。您可以构建自己的插件来简化 find 方法。

    Microsoft 创建了$find 作为将其 ASP.NET AJAX 组件链接到 DOM 的一种方式。

    【讨论】:

    • 终于有人知道$find()的真正用途了
    【解决方案2】:

    没有 1to1 等价物,但您想要的是 $('selector')

    查看不同selectors上的docs

    $find('MyComponent') would be $('#MyComponent')
    
    $find('MyComponent',div) would be $(div).find('#MyComponent')
    

    【讨论】:

      【解决方案3】:

      我会做以下事情,没有麻烦,没有大惊小怪,直截了当。

      $('#' + <%=myControl.ClientID%>)
      

      【讨论】:

      • 假设您在呈现代码所在的页面上,而不是在外部 JavaScript 文件中。
      • 是的。我知道。实际上我一直在使用 $("input[name*=pnlSuccess]) 来查找控件。我真正想要的是 $find() 返回的对象。似乎 $find() 在 ASP 中返回的对象。 Net Ajax 与 Jquery 中 $() 返回的对象不同。我在使用 Telerik Controls 时肯定注意到了这一点。
      • 这是因为 $find() 只返回一个 DOM 元素,而 $() 返回一个包装 DOM 元素数组的 jQuery 对象,尽管如此,$() 也同样有用,可能更有用。
      • 实际上,$find() 不会返回 DOM 元素。它的 $get() 函数返回一个 DOM 元素...
      【解决方案4】:

      如果您想通过其 ASP.NET 代码 ID 而不是生成的 ClientID (ctl00_RealId) 来查找元素,则可以使用此函数。它只查找 ID 以 _{the real ID here} 结尾的元素:

      var $$ = function (id, context) {
          var $ = (jQuery) ? jQuery : return ;
          var el = $("#" + id, context);
            if (el.length < 1)
              el = $("[id$=_" + id + "]", context);
          return el;
      }
      

      例如,假设您的代码中的 ID 是pnlSuccess,比如说一个面板:

      <asp:Panel ID="pnlSuccess" runat="server"></asp:Panel>
      

      但在呈现的代码中,它显示为:ctl00_content_ctl00_pnlSuccess

      调用$$("pnlSuccess") 将找到该渲染面板。

      【讨论】:

      • 这在 UserControl 情况下可能非常不可靠,因为许多控件可能以相同的 ID 结尾但具有不同的前缀
      • 在这种情况下,使用context 会更有意义。
      • 是的。我知道。实际上我一直在使用 $("input[name*=pnlSuccess]) 来查找控件。我真正想要的是 $find() 返回的对象。似乎 $find() 在 ASP 中返回的对象。 Net Ajax 与 Jquery 中 $() 返回的对象不同。我在使用 Telerik Controls 时肯定注意到了这一点。
      【解决方案5】:

      我知道这已经过了很长时间了,但我想我有你正在寻找的那种解决方案。如果我是正确的,您正在寻找 $find jQuery 替代品,因为您不知道元素的 ID(据我所知,$find 没有选择器,但 jQuery 非常棒)。我刚刚在 SharePoint 页面上使用 Telerik 控件遇到了这个问题,所以我的对象 ID 长期混乱,而且由于 Sharepoint 2010 是在 .NET 3.5 上,我不能使用静态 ID。

      解决方案很简单,但它让我绞尽脑汁。 $find() 按 ID 搜索,幸运的是我们可以通过 jQuery 将其作为字符串返回:$("elem").attr("id")。所以基本上我们所做的就是在$find 函数中使用jQuery,它可以工作。这是我项目中的一个示例:

      var contextMenu = $find($("[id*=mnuContext]").attr("id"));
      

      这对我很有用,并且会在我的 SharePoint 解决方案的其余部分帮助我很多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2013-10-02
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        相关资源
        最近更新 更多