Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] problemas con .append()

Estas en el tema de problemas con .append() en el foro de Jquery en Foros del Web. Hola colegas foreros, tengo un problema con la funcion append de Jquery. No he encontrado la manera de evitar que se acumulen los elementos cada ...
  #1 (permalink)  
Antiguo 17/07/2014, 06:14
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 2
problemas con .append()

Hola colegas foreros, tengo un problema con la funcion append de Jquery. No he encontrado la manera de evitar que se acumulen los elementos cada vez que se ejecuta la funcion append() voy a color parte de codigo aqui:

Código Javascript:
Ver original
  1. $.post("controlador/controllerTraduccion.php",{op:'traducirEsp-Way',word:$("#palabraTr").val()},
  2.         function(data){
  3.             var json = JSON.stringify(data);   
  4.             var datos = $.parseJSON(json);
  5.             var response = JSON.parse(datos);
  6.             $("#palabraID").val(response.way_id)
  7.             $("#palabraTrad").val(response.way_palabra);
  8.             $("#dir_sonido").val(response.way_sonido);
  9.            
  10.                 $("#sound").on('click',function() {
  11.                reproducir(response.way_id,response.way_sonido);
  12.                 });    
  13.           });

Aqui hago un post para para consulta una tabla y devuelvo un arreglo JSON y lleno los campos, luego le doy click al elemento $("#sound") para que me ejecute la funcion reproducir() que es la siguiente:

Código Javascript:
Ver original
  1. function reproducir(id,sonido){
  2.  
  3.           $("#sonido").remove();
  4.          $("#sound").append("<audio id='sonido'><source src='proyectoTraductor/"+sonido+"'></source></audio>") 
  5.         $("#sonido")[0].play();
  6.           alert($("#sound").html());
  7.  
  8.  
  9.         //return false;
  10. }

aqui agrego etiquetas audio al elemento $("#sound") con append(), fijense que estoy haciendo un remove del elemento que se genero, pero no me esta funcionado, el primer click me ejecuta bien y me emite el audio correcto, pero la segunda vez, me ejecuta el primer sonido y luego el segundo, cuando deberia ejecutarse solo el audio correspondiendo al segundo click.

Lo que hago es un traductor de palabras, cada vez que traduzco una palabra me llena los campos que puse arriba con el arreglo JSON

Espero puedan ayudarme, ya que no he dado con la solucion

Saludos y gracias


Espero que alguien me pueda ayudar y se lo agredezco de antemano
  #2 (permalink)  
Antiguo 17/07/2014, 13:28
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: problemas con .append()

* * * *
Código Javascript:
Ver original
  1. *$("#sound").html("<audio id='sonido'><source src='proyectoTraductor/"+sonido+"'></source></audio>")*

función append/prepend sirve para eso para añadir al dom,
Debes usar html para tu propósito, y quitar el remove.

Salu2!
  #3 (permalink)  
Antiguo 18/07/2014, 05:49
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: problemas con .append()

Como te comenta Djoaq tendrías que tener el bloque #sound vacío y usar la función .html de jQuery para añadirle el tag de <audio> que necesitas
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #4 (permalink)  
Antiguo 18/07/2014, 05:53
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: problemas con .append()

Hola compañeros, por alguna extraña razon, el alert que estaba mostrando al final de la funcion, para ver el comportamiento de los elementos agregados, era lo que me estaba afectando, quite el alert y todo funciona correctamente, cada vez que le de click al elemento $('#sound') me agregara el elemento $('#sonido') y ejecuta el sonido y si existe hace un remove() del elemento

Código Javascript:
Ver original
  1. function reproducir(id,sonido){
  2.      
  3.               $("#sonido").remove();
  4.              $("#sound").append("<audio id='sonido'><source src='proyectoTraductor/"+sonido+"'></source></audio>")
  5.             $("#sonido")[0].play();
  6.      
  7.     }

Gracias por sus respuestas Saludos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:14.