是否存在與ASP.Net Ajax的$ find()函數相當的JQuery?
$() != $find()
是否存在與ASP.Net Ajax的$ find()函數相當的JQuery?
$() != $find()
沒有一個1to1等價的,但你想要的是$(「選擇」)
在不同selectors
$find('MyComponent') would be $('#MyComponent')
$find('MyComponent',div) would be $(div).find('#MyComponent')
如果你想找到一個元素時退房docs通過它的ASP.NET代碼ID而不是生成的ClientID(ctl00_RealId
),那麼你可以使用這個函數。它只是看起來對於具有與_{the real ID here}
結尾的ID元素:
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")
會發現該渲染面板。
我只是做了以下,沒有不管,沒有大驚小怪,直接點。
$('#' + <%=myControl.ClientID%>)
假設你在頁面上呈現的代碼是在on,而不是在外部JavaScript文件中 – 2009-12-04 20:14:36
yup。i我知道。實際上,我一直在使用$(「input [name * = pnlSuccess])來查找控件,我真正想要的是$ find()返回的對象,它似乎是$ find()在ASP中返回的對象。 Net Ajax與Jquery返回的$()不同的對象不同,我在使用Telerik Controls的時候注意到了這一點 – pauldomag 2009-12-06 11:08:14
這是因爲$ find()只返回一個DOM元素,而$()返回一個包裝DOM元素數組的jQuery對象但是,$()同樣有用,實際上可能更有用, – 2009-12-07 15:08:07
沒有因爲$find
回報AJAX組件相關的DIV元素,而不是DOM元素。你可以建立自己的插件來快速找到find方法。
Microsoft創建了$find
作爲將其ASP.NET AJAX組件鏈接到DOM的一種方式。
最後有人知道真正使用'$ find()' – 2012-08-09 04:15:39
我知道這是一個過期的LOOOOOOOONG,但我想我有你想要的那種解決方案。如果我是正確的,你正在尋找一個$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解決方案的其餘部分。
這可能是非常不可靠的UserControl情況下,很多控件可能以相同的ID結尾,但具有不同的前綴 – 2009-12-04 20:14:32
在這種情況下,使用'context'會更有意義。 – 2009-12-04 20:17:44
是。我知道。實際上,我一直在使用$(「input [name * = pnlSuccess])來查找控件,我真正想要的是$ find()返回的對象,它似乎是$ find()在ASP中返回的對象。 Net Ajax與Jquery返回的$()不同,我在使用Telerik Controls時明顯注意到了這一點。 – pauldomag 2009-12-06 11:07:36