2009-12-04 14 views
11

¿Hay un equivalente de JQuery de la función $ find() de ASP.Net Ajax?

$() != $find() 

Respuesta

2

No hay un equivalente 1to1, pero lo que quiere es $ ('selector')

Mira la docs en los diferentes selectors

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

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

Si usted quiere encontrar un elemento por su ID de código ASP.NET en lugar del ID de cliente generado (ctl00_RealId), entonces puede usar esta función. Sólo se ve para los elementos que tienen un ID que termina con _{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; 
} 

Por ejemplo, supongamos que su identificación en su código es pnlSuccess, por ejemplo un panel:

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

Pero en el código prestado se sale como: ctl00_content_ctl00_pnlSuccess

llamando al $$("pnlSuccess") encontrará ese panel renderizado.

+0

esto podría ser muy poco confiable en situaciones UserControl donde muchos controles pueden terminar con la misma ID pero tienen un prefijo diferente –

+0

En ese caso, usar el 'context' tendría más sentido. –

+2

yup. Yo sé eso. de hecho he estado usando $ ("input [name * = pnlSuccess]) para encontrar el control. Lo que realmente quiero es el objeto que $ find() devuelve. Parece que el objeto que $ find() devuelve en ASP. Net Ajax difiere del objeto que $() en Jquery devuelve. Definitivamente noté esto al usar Telerik Controls. – pauldomag

1

Me gustaría hacer lo siguiente, sin alboroto, sin complicaciones, directo al grano.

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

Eso supone que estás en la página en la que está el código renderizado, no en un archivo JavaScript externo. –

+2

yup i saber que.de hecho, he estado usando $ ("input [name * = pnlSuccess]) para encontrar el control. Lo que realmente quiero es el objeto que $ find() devuelve. Parece que el objeto que $ find() devuelve en ASP. Net Ajax difiere del objeto que $() en Jquery devuelve. Definitivamente noté esto cuando uso Telerik Controls. – pauldomag

+0

Eso es porque $ find() simplemente devuelve un elemento DOM, y $() devuelve un objeto jQuery que envuelve una matriz de elementos DOM , sin embargo, $() es tan útil, probablemente más. –

8

no existe ya $find como resultado el componente de AJAX en relación con el elemento DIV, y no el elemento DOM. Puede construir su propio complemento que abre el método de búsqueda.

Microsoft creó $find como una forma de vincular sus componentes ASP.NET AJAX al DOM.

+1

Finalmente, alguien sabe el verdadero uso de '$ find()' –

1

Sé que es un retraso de LOOOOOONG, pero creo que tengo el tipo de solución que está buscando. Si estoy en lo correcto, está buscando un sustituto jQuery $find porque no conoce el ID del elemento (que $find no tiene selectores hasta donde yo sé, pero jQuery es increíble con). Acabo de toparme con este problema usando los controles de Telerik en una página de SharePoint, por lo que mi ID de objeto es un desastre largo y alocado, y como Sharepoint 2010 está en .NET 3.5, no puedo usar una ID estática.

La solución es simple, pero atormentó mi cerebro por un tiempo. $find() está buscando por ID, que afortunadamente podemos devolver como una cadena a través de jQuery: $("elem").attr("id"). Entonces, básicamente, lo que hacemos es usar jQuery dentro de la función $find y funciona. He aquí una muestra de mi proyecto:

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

Esto funcionó para mí, y me va a ayudar mucho con el resto de mi solución de SharePoint.