Tengo los siguientes elementos de entrada:
AAA y BBB son constantes y siempre sabré cuáles son. Sin embargo, RandomString siempre será aleatorio.
Quiero obtener el valor de AAA_RandomString_BBB. No quiero que los valores de los elementos de entrada con ID terminen en _Start o _End.
Intenté el siguiente:
$('[id^="AAA_"]')
Pero lo anterior selecciona todos los elementos de entrada que tienen una ID que comienza con “AAA_”
Necesito alguna forma de seleccionar usando una syntax tipo regex como:
$('[id^="AAA_(.+?)_BBB"]')
es posible? Si no, ¿alguien puede sugerir un método de selección?
Puede combinar ambos selectores en un selector de atributos múltiples .
$("[id^=AAA_][id$=_BBB]")
Devolverá todos los elementos que coinciden con todos los filtros de atributos especificados:
[id^=AAA_]
coincide con los elementos con el atributo id
comienza con AAA_
, y [id$=_BBB]
coincide con los elementos con el atributo id
termina con _BBB
. Otras alternativas genéricas:
:regex()
, .filter()
. Esto se puede hacer así:
$('input').filter(function(){ return this.id.match(/^AAA_.+_BBB$/) })
Puede usar $('input',
para hacer la búsqueda más precisa. Ver también aquí
Puede buscar los identificadores que comienzan con AAA
y terminan con BBB
esta manera:
$("[id^=AAA_][id$=_BBB]")
El violín de trabajo: http://jsfiddle.net/DN9uV/
Utilizo para resolver esto con los selectores de clase que no necesitan ser únicos.
Esto también tiene un efecto positivo en la velocidad porque no se requiere una búsqueda compleja. Además, puede usar esto para diferentes estilos de elementos diferentes.
p.ej
element type aa element type aa element type aa and bb element type bb
Ahora puedes simplemente usar el selector de clase
$('.aa').click(function(){ console.log( 'clicked type aa #' + $(this).attr('id') ); }); $('.bb').click(function(){ console.log( 'clicked type bb #' + $(this).attr('id') ); });
Sería mejor simplemente verificar la terminación de ID en _BBB por
$("[id$=_BBB]")
Qué tal esto :