txt - manejo de archivos en javascript
Seleccionar números en una página con jQuery o Javascript (3)
Me pregunto si hay una forma de localizar números en una página con jQuery o Javascript simple.
Esto es lo que quiero hacer:
Diga "23 de junio" en la página. Lo que quiero hacer es preceder y agregar algunos selectores <span>
al número.
Usando :contains()
con jQuery selecciona todo, no solo el número.
Estas cadenas se están generando sin elementos de ajuste por un tema de Wordpress en el que estoy trabajando, y solo quiero seleccionar el número .
¡Cualquier ayuda sería apreciada! Gracias por incluso pensarlo.
-Jorge
Es completamente dependiente del formato de su fecha.
Encontré este sitio web con muchas expresiones regulares diferentes (porque estás buscando un texto normal para una fecha).
Esta parece una buena opción si este es su formato para su fecha (dd MMM aaaa): http://regexlib.com/REDetails.aspx?regexp_id=405
Supongo, porque es una plantilla, que sus fechas serán las mismas para todas las páginas. Entonces el formato será el mismo también. Puede usar la expresión regular en cada fragmento de texto en su plantilla si la define bien.
Puede recorrer todos los elementos, observar los nodos de texto y reemplazarlos con contenido actualizado que tenga el número envuelto.
var regex = /(/d+)/,
replacement = ''<span>$1</span>'';
function replaceText(el) {
if (el.nodeType === 3) {
if (regex.test(el.data)) {
var temp_div = document.createElement(''div'');
temp_div.innerHTML = el.data.replace(regex, replacement);
var nodes = temp_div.childNodes;
while (nodes[0]) {
el.parentNode.insertBefore(nodes[0],el);
}
el.parentNode.removeChild(el);
}
} else if (el.nodeType === 1) {
for (var i = 0; i < el.childNodes.length; i++) {
replaceText(el.childNodes[i]);
}
}
}
replaceText(document.body);
Ejemplo: http://jsfiddle.net/JVsM4/
Esto no hace ningún daño a los elementos existentes, y sus datos jQuery asociados.
EDITAR: Podría acortarlo un poco con un poco jQuery:
var regex = /(/d+)/g,
replacement = ''<span>$1</span>'';
function replaceText(i,el) {
if (el.nodeType === 3) {
if (regex.test(el.data)) {
$(el).replaceWith(el.data.replace(regex, replacement));
}
} else {
$(el).contents().each( replaceText );
}
}
$(''body'').each( replaceText );
Ejemplo: http://jsfiddle.net/JVsM4/1/
Tenga en cuenta que la expresión regular requiere el modificador global g
.
Probablemente un poco más lento de esta manera, así que si el DOM es bastante grande, usaría la versión que no es jQuery.
Solo pensando en voz alta, pero ¿piensas que esto funcionaría?
document.body.innerHTML = document.body.innerHTML.replace(/(/d+)/g, "<span class=''number''>$1</span>")