jQuery .template y .tmpl no funcionan correctamente

Ok, básicamente estoy tratando de tener una sola línea de código al final de una publicación:

<p id="audioembed">Click here to <a href="http://www.site.com/mp3file.mp3"> download MP3</a></p>

Y luego, en la parte inferior de la página, tengo el script para verificar y ver si el usuario lo está viendo en un iPhone, iPad o iPod, y luego extraigo la URL del mp3, borro el elemento y luego agrego un audio HTML5 básico. jugador en su lugar:

<script>
jQuery(document).ready(function($) {
if(navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod')
{
var audioElement = $('#audioembed'), href = audioElement.children('a').attr('href');
$.template("audioTemplate", "<audio src='${src}' controls>")
audioElement.empty();
$.tmpl("audioTemplate", {src: href}).appendTo(audioElement);
};
});
</script>

Pero por alguna razón, no funciona en absoluto. Sé que la verificación de iDevice está funcionando (si reemplazo las líneas de la plantilla con algo básico como un cambio de color CSS, funciona bien), así que tengo que estar estropeando algo con la plantilla. Cualquier luz que pueda arrojar sobre este problema sería muy apreciada.

preguntado el 12 de junio de 12 a las 21:06

Este planteamiento de « "<audio src="${src}" controls>" javascript no es válido. cambiarlo a "<audio src='${src}' controls>" -

Gracias, eso fue solo un error tipográfico cuando estaba publicando la pregunta. Lo tengo correcto en la página. -

¿Nada? Seguí buscando recursos sobre el uso de plantillas y parece que técnicamente mi código debería funcionar, pero por alguna razón simplemente no lo es. Si mi código es correcto (que espero que alguien aquí pueda confirmar o refutar), entonces supongo que tal vez sea un conflicto en otro lugar. Ojalá alguien me pueda arrojar algo de luz sobre esto. Gracias. -

Lo siento, solo he usado jqote y underscore plantillas. -

.tmpl fue eliminado de jQuery hace mucho tiempo. Ver stackoverflow.com/questions/7911732/… -

2 Respuestas

Creo que su plantilla todavía tiene que estar en un literal de cadena javascript válido:

$.template("audioTemplate", "<audio src='${src}' controls>");

Respondido el 12 de junio de 12 a las 21:06

O más bien (para aclarar) la forma en que lo tiene escrito en su respuesta es cómo está escrito en el sitio. Lo escribí mal aquí cuando publiqué la pregunta. - Pedro Sorensen

Bueno, no pude entender por qué la función de plantilla no funcionaría, así que por ahora solo seguí la ruta fácil con un anexo básico que extrae la URL de esta manera:

<script>
jQuery(document).ready(function($) {
(navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod')
{
var audioElement = $('#audioembed'), href = audioElement.children('a').attr('href');
audioElement.empty();
audioElement.append('<audio src="'+href+'"controls>');
};
});
</script>

Tendrá que servir por ahora. Todavía me gustaría saber si alguien descubre por qué el plan original no funcionó. ¡Gracias!

Respondido el 14 de junio de 12 a las 01:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.