【发布时间】:2009-12-04 19:52:03
【问题描述】:
是否有与 ASP.Net Ajax 的 $find() 函数等效的 JQuery?
$() != $find()
【问题讨论】:
是否有与 ASP.Net Ajax 的 $find() 函数等效的 JQuery?
$() != $find()
【问题讨论】:
没有因为$find返回与DIV元素相关的AJAX组件,而不是DOM元素。您可以构建自己的插件来简化 find 方法。
Microsoft 创建了$find 作为将其 ASP.NET AJAX 组件链接到 DOM 的一种方式。
【讨论】:
$find()的真正用途了
我会做以下事情,没有麻烦,没有大惊小怪,直截了当。
$('#' + <%=myControl.ClientID%>)
【讨论】:
如果您想通过其 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") 将找到该渲染面板。
【讨论】:
context 会更有意义。
我知道这已经过了很长时间了,但我想我有你正在寻找的那种解决方案。如果我是正确的,您正在寻找 $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 解决方案的其余部分帮助我很多。
【讨论】: