Saltar al contenido

escape del valor del selector jQuery

Esta división fue probado por especialistas para asegurar la exactitud de este artículo.

Solución:

Uso esta función para escapar de los selectores de jquery. Se escapa básicamente de todo lo cuestionable pero puede ser demasiado agresivo.

function escapeStr(str) 
/@])/g,'\$1');      

    return str;

No creo que puedas. Eso deberían ser:

#SomeDropdown >option[value='a'b]

']

Y esto funciona como un selector de CSS (en los navegadores modernos). Expresado en un JavaScript string literal, naturalmente necesitarías otra ronda de escape:

$("#SomeDropdown >option[value='a\'b]

']")

Pero esto no funciona en jQuery porque su analizador selector no cumple completamente con los estándares. Utiliza esta expresión regular para analizar el value parte de un [attr=value] condición:

(['"]*)(.*?)3|)s*]

3 es el grupo que contiene las comillas de apertura, que extrañamente pueden ser múltiples comillas de apertura, o ninguna comilla de apertura. Los .*? entonces puede analizar cualquier carácter, incluyendo citas hasta que llegue al primer carácter ‘]’, finalizando la coincidencia. No existe ninguna disposición para caracteres especiales CSS de escape de barra invertida, por lo que no puede hacer coincidir un carácter arbitrario string valor en jQuery.

(Una vez más, los analizadores de expresiones regulares pierden).

Pero la buena noticia es que no tiene que confiar en los selectores de jQuery; hay métodos DOM perfectamente buenos que puede usar, en particular HTMLSelectElement.options:

var select= document.getElementById('SomeDropdown');
for (var i= select.options.length; i-->0;) 
    if (select.options[i].value=="a'b]

") // do something with option

Esto es muchas veces más simple y rápido que pedirle a jQuery que analice e implemente laboriosamente su selector, y puede usar cualquier valor string te gusta sin tener que preocuparte por escapar de los caracteres especiales.

utilizar .filter() con una función personalizada. txt debe contener su desagradable stringo simplemente podría reemplazar indexOf con cualquier otra función que elijas.

$("#SomeDropdown option")
   .filter(function(i)
       return $(this).attr("value").indexOf(txt) != -1;
   )
   .remove();

Comentarios y calificaciones del artículo

Recuerda que te brindamos la opción de decir si diste con el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *