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.

lidermin
fuente

Respuestas:

171

Tratar

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

Deberia de funcionar

Glen Little
fuente
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()
SLaks
fuente
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.

Yuriy Faktorovich
fuente
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]')
Haroon Khalid
fuente