2010-11-17 16 views
6

Genero din un div y quiero cambiar su contenido a través de html()/text(), pero no funciona.jquery .text() o .html() no funciona

Aquí está el código:

var div = '<div class="ps_album"><img alt="" src="images/1px.gif" class="thmb"><div class="ps_desc"><h2>title</h2></div></div>'; 

$(div).find('.ps_desc').html('<h1>Hello</h1>'); 
$(div).appendTo('body'); 

en el código anterior, la tercera línea, es decir

$(div).find('.ps_desc').html('<h1>Hello</h1>'); 

no funciona .. ¿por qué ??

+0

hay un error jQuery una versión más antigua, la situación rápido tiempo de una variable fracaso no hay resultados para utilizar HTML (jquery) no funciona, trate de usar javascript puro es funciona bien. – KingRider

Respuesta

8

El problema es que se está reevaluando $(div). La primera línea que opera en el fragmento DOM aún no agregado no actualiza el valor de cadena de "div". Por lo tanto, la segunda vez que creas $(div) vuelves a empezar con el fragmento original.

Prueba esto:

$(div).find('.ps_desc').html('<h1>Hello World</h1>').end().appendTo($('body')); 

El jQuery .end() método de "estallar" el efecto de la .find() llamada anterior, por lo que en este caso se le permite volver al punto original de la navegación, que es el fragmento que' Reconstruyendo desde la cuerda. La siguiente llamada a .appendTo() actuará en el <div> externo que haya creado, y para que sea, haga lo correcto.

0

Usted debe invertir el orden es decir

$(div).appendTo('body'); 
$("body div").find('.ps_desc').html('<h1>Hello</h1>'); 

descubrimiento y html métodos trabajos sobre elementos dentro de DOM. A menos que agregue su cadena HTML a DOM estos métodos jquery no funcionarán.

Opción II

var div = $('<div class="ps_album"><img alt="" src="images/1px.gif" class="thmb"><div class="ps_desc"><h2>title</h2></div></div>'); 

$(div).appendTo('body'); 
$(div).find('.ps_desc').html('<h1>Hello</h1>'); 
+0

no funciona ... compruebe aquí: http://jsfiddle.net/nbF2H/ –

+0

revise el código actualizado –

+0

sí ... que funcionó ... pero ¿por qué ??? –

0

Prueba esto:

$(div).appendTo('body'); 
$('body').find('.ps_desc').html('<h1>Hello</h1>'); 
0
$('body').append('<div class="ps_album"><img alt="" src="images/1px.gif" class="thmb"><div class="ps_desc"><h2>title</h2></div></div>') 
     .find('.ps_desc') 
     .html('<h1>Hello World</h1>'); 

See here

0

Hoy estoy presentando en improvements to security note templates

Este es un ejemplo de XSS vulnerability :

$(div).appendTo('body'); 
$("body div").find('.ps_desc').html('<h1></h1>'); 
0

Asegúrese de que está accediendo a la identificación correcta.

Si está utilizando ASP.NET, podría ser porque ASP.NET cambia los nombres de identificación, si se agrega "runat =" server".

intente acceder a él utilizando el nombre de la clase en su lugar y ver si funciona.

<td id="mytd" class="myclass" runat="server"></td> 
    $('.myclass').html() 
    $('.myclass').text()