estoy usando jQuery de .data()
para trabajar con HTML5 atributos personalizados de datos, donde el valor del atributo tiene que ser capaz de contener dos comillas simples y comillas dobles:escape Cotizaciones en HTML5 datos de atributos utilizando JavaScript
<p class="example" data-example="She said "WTF" on last night's show.">
Sé que usar códigos de caracteres como "
en el valor del atributo de datos podría hacer que lo anterior funcione, pero no siempre puedo controlar cómo se ingresan los valores. Además, tengo que ser capaz de utilizar las etiquetas HTML en el marcado, así:
<p class="example" data-example="
She said "<abbr title="What The F***">WTF</abbr>" on last night's show.
">
Si alguna forma de .replace()
es la respuesta, entonces tiene que hacer antes de que el valor es leído por .data()
-quizás por aplicándolo en todo el <body>
?
El escape de barra diagonal normal como <abbr title="te\'st">WTF</abbr>
tampoco funciona.
Lo ideal sería tener la flexibilidad para trabajar w/tanto:
data-example="..."
y data-example='...'
Pero si sólo es posible un lado y luego pude al menos rollo con eso. Ideas?
actualización - un poco más de contexto:
estoy trabajando en esto para responsejs.com. Una aplicación real de esto podría ser cargar solo una barra lateral para navegadores que superan cierto ancho (y que esto se maneje en el navegador en lugar de hacerlo en PHP). En el caso de WordPress, por ejemplo, la barra lateral puede contener widgets, imágenes, etc. Las comillas dentro de las etiquetas de PHP son un b/c no problemático, se analizan en HTML antes de que lleguen al navegador. Ejemplo:
<aside id="primary" class="sidebar"
data-oweb='
<?php dynamic_sidebar('primary'); ?>
'
>
optional default markup for mobile and no-js browsers here
</aside>
JavaScript no lo ayudará después de que la página haya procesado las citas de la etiqueta. Tiene que hacerse en el servidor. – epascarello