问题 ASP.Net Ajax $ find()Jquery等效


是否有一个JQuery相当于ASP.Net Ajax的$ find()函数?

$() != $find()

6816
2017-12-04 19:52


起源



答案:


从那以后就没有了 $find 返回与DIV元素相关的AJAX组件,而不是DOM元素。您可以构建自己的插件,快捷方式查找方法。

微软创建了 $find 作为将ASP.NET AJAX组件链接到DOM的方法。


8
2018-01-24 13:42



终于有人知道真正的用途了 $find() - Israel Rodriguez


答案:


从那以后就没有了 $find 返回与DIV元素相关的AJAX组件,而不是DOM元素。您可以构建自己的插件,快捷方式查找方法。

微软创建了 $find 作为将ASP.NET AJAX组件链接到DOM的方法。


8
2018-01-24 13:42



终于有人知道真正的用途了 $find() - Israel Rodriguez


没有1to1的等价物,但你想要的是$('选择器')

看看 文档 在不同的 选择

$find('MyComponent') would be $('#MyComponent')

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

2
2017-12-04 19:58





如果要通过其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") 会找到那个渲染的面板。


1
2017-12-04 20:02



这在UserControl情况下可能非常不可靠,其中许多控件可能以相同的ID结尾但具有不同的前缀 - Marek Karbarz
在那种情况下,使用 context 会更有意义。 - Mark Ursino
对。我知道。实际上我一直在使用$(“input [name * = pnlSuccess])来查找控件。我真正想要的是$ find()返回的对象。似乎$ find()的对象在ASP中返回。 Net Ajax与Jquery中的$()返回的对象不同。我在使用Telerik Controls时非常注意到这一点。 - pauldomag


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

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

1
2017-12-04 20:13



假设您在所呈现的代码所在的页面上,而不是在外部JavaScript文件中。 - Mark Ursino
对。我知道。实际上我一直在使用$(“input [name * = pnlSuccess])来查找控件。我真正想要的是$ find()返回的对象。似乎$ find()的对象在ASP中返回。 Net Ajax与Jquery中的$()返回的对象不同。我在使用Telerik Controls时非常注意到这一点。 - pauldomag
这是因为$ find()只返回一个DOM元素,而$()返回一个包装DOM Elements数组的jQuery对象,尽管如此,$()同样有用,可能更有用。 - Ben Lesh
实际上,$ find()不返回DOM元素。它的$ get()函数返回一个DOM元素...... - pauldomag


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

解决方案很简单,但它让我的大脑搁浅一段时间。 $find() 正在通过ID搜索,幸运的是我们可以通过jQuery作为字符串返回: $("elem").attr("id")。基本上我们所做的就是在里面使用jQuery $find 功能,它的工作原理。这是我项目的一个示例:

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

这对我有用,并且将帮助我完成其余的SharePoint解决方案。


1
2017-07-10 16:19