2011-04-14 9 views
7

¿Cómo obtengo el ID de un control de servidor con jQuery?recuperar ID del control del servidor usando jQuery

E.g. Tengo

<asp:Label ID="label1" runat="server""></asp:Label>

y ahora quiero conseguir "label1",

var id = ?? 
+0

un vistazo a los elementos HTML que genera. No estoy seguro de cómo funciona ASP 'runat' – JohnP

+0

@JohnP es correcto, puede ver el HTML, o simplemente usar el ID de cliente como se muestra a continuación. –

Respuesta

0

jQuery se ejecuta en el lado del cliente por lo que sólo sería capaz de acceder al ID del elemento HTML en lugar de la control asp en el servidor.

+0

Cierto, jQuery se ejecuta en el lado del cliente. Sin embargo, ASP hace algunas cosas funky a los ID de controles con la etiqueta runat. Entonces no puedes usar la ID. Cambia en el tiempo de ejecución ... –

9
var labelID = $('#<%= label1.ClientID %>'); 

Debe obtener la ID del cliente.

Si solo necesita la ID, y no el valor real del control, entonces ni siquiera necesita jQuery.

var labelID = '<%= label1.ClientID %>'; 
+0

En su primer ejemplo, cambiaría el nombre de 'id' a otra cosa ya que es una referencia al envoltorio de JQuery para el elemento de etiqueta. –

-1

Las etiquetas se representan como etiquetas span. Así que si usted desea seleccionar todas las etiquetas:

$(document).ready(function() 
    { 
     $Labels = $("span"); 

     $Labels.each(function() 
     { 
      alert(this.id); 
     }); 
    }); 
11

Si utiliza ASP.NET 4.0 se puede establecer el atributo de ClientIDMode = "estático" y su código se ve siguiente manera:

<asp:Label ID="label1" runat="server" ClientIDMode="Static"></asp:Label> 

JS:

var id = 'label1'; 
+0

tengo que amar .net 4.0. toda la cosa de 'clientid' definitivamente causó algunas largas horas de google para mí en el día. –

+1

Puede agregar páginas clientIdMode = "Static" directiva en web.config para hacer que todo el sitio haga esto. – Rake36

+0

En realidad, ¿no debería ser el js 'var id = document.getElementById (" label1 ");'? – Krondorian

0

¿Estás utilizando la página maestra? En caso afirmativo, dale ContentPlaceHolderID junto con la identificación de control.

Ej:

jQuery("#ContentPlaceHolderID_ControlId").val; 
    jQuery("#body_label1").text; 

Usted puede ver esto en ViewSource

+0

Ese enfoque se pone feo, más "anidamiento" tiene. Paneles ASP, controles de usuario, páginas maestras, etc. todos agregan al valor de ID. O bien necesitas utilizar un enfoque jQuery puro, y obtener el control que "termina con" tu valor de ControlID, o utilizar el enfoque que mencionaron @pstarkov o Jack Marchetti. –

3
var $lblObj = $("label[id$='label1']:first") 
Cuestiones relacionadas