Encuentra el elemento html cuyo id comienza con


89

mi pregunta es esta:

Tengo código HTML en varias páginas, en cada una de ellas utilicé un JQgrid (cuadrícula jquery) para mostrar algunos datos. Sabía que en cada una de esas páginas, el elemento que contiene el JQgrid se llama "LIST_xxx". Ahora necesito hacer un javascript que tome ese elemento "LIST_XXXX" en cada página y haga algunas cosas. ¿Cómo podría buscar un elemento por ID pero solo conociendo su parte inicial (del ID, como mencioné anteriormente):

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Espero haberme dejado claro. Gracias.

Respuestas:


171

Tratar

$('div[id^="list_"]')

Deberia de funcionar


Mucho mejor diseño en esa referencia que la documentación de jquery.
Yuriy Faktorovich

Esto funciona bien gracias ... Lo usé para encontrar una identificación que termina con un valor específico como if ($ ('div [id $ = "' + val + '"]'). Length> 0) ejecutar algo;
raphie

Bueno, funciona bien para los ID de controles simples anteriores. Cómo hacer que funcione para escenarios como si tengo controles con ID como "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" y así sucesivamente, y quiero el recuento de todos esos elementos que tienen ID como "txt _ * _ city "
Rajiv Bhardwaj

@Rajiv si tiene control sobre el html, sería bueno agregar una clase como "ciudad" a cada uno de esos elementos. A continuación, puede contarlos fácilmente.
Glen Little

@Rajiv si no puede mejorar el html, consulte api.jquery.com/multiple-attribute-selector ; puede combinar los selectores. Por ejemplo, $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
Glen Little

22

Debe usar el atributo que comienza con el selector , así:

$('[id^=list_]').whatever()

Bueno, funciona bien para los ID de controles simples anteriores. Cómo hacer que funcione para escenarios como si tengo controles con ID como "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" y así sucesivamente, y quiero el recuento de todos esos elementos que tienen ID como "txt _ * _ city "
Rajiv Bhardwaj

Hola @Rajiv, bienvenido a stackoverflow. Respondí a la otra copia de tu comentario.
Glen Little

8

Dale a ese elemento un nombre de clase común o algún otro atributo que puedas consultar.


Hola, gracias por tu respuesta, el problema con tu sugerencia es que puede haber varias tablas que contienen JQgrid, por lo que podría haber: "LIST_customer", "LIST_carrier" ... y así sucesivamente. Y necesito seleccionar ambos basen solo en la parte de ID inicial: "LIST_".
lidermin

1
Entiendo, pero convertirlos a todos en una clase List me parece un enfoque más legible y descriptivo. Para cada uno lo suyo, siempre puede usar el selector comienza con en jquery como se muestra en otras respuestas.
Yuriy Faktorovich

@lidermin Lo que dice Yuriy debería funcionar. ¿Por qué no agrega una clase a sus controles como "lista" ya que tiene list_ como prefijo? por lo que cuando seleccione esa clase obtendrá cada uno de esos controles. Esta será la forma más eficaz de hacerlo.
Josh Mein

La respuesta de Yuriy funcionará. Puede agregar la misma clase (por ejemplo, "ListsINeedToFind") a todos sus elementos "LIST_XXXX" y luego buscarlos usando $('.ListsINeedToFind').
Annabelle

A veces es necesario tener varios elementos con la misma clase pero diferentes ID.
Vincent


1

Para obtener un elemento que termine con una determinada identificación / carácter

find('[id$=someid]')

Para obtener un elemento que comience con una determinada identificación / carácter

find('[id*=anotherid]')

Para obtener un elemento que coincida con una determinada identificación / carácter

find('[id^=id]')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.