2010-11-17 103 views
6

我動態生成一個div,並希望通過html()/ text()更改它的內容,但它不起作用。jquery .text()或.html()不工作

下面的代碼:

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'); 
在上面的代碼中

,3號線即

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

不工作。爲什麼?

+0

有一個jQuery錯誤的舊版本,快速時間的情況發生故障變量沒有結果使用HTML(jQuery的)不工作時,儘量使用純JavaScript是正常工作。 – KingRider 2016-11-23 11:31:29

回答

8

的問題是,你正在重新評估$(div)。在尚未添加的DOM片段上運行的第一行不會更新「div」的字符串值。因此,第二次創建$(div)時,您將重新創建原始片段!

試試這個:

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

jQuery的.end()方法「啪啪」前面.find()通話的效果,所以在這種情況下,它可以讓你回到原來的點導航,這是片段你」從字符串重新建設。隨後撥打.appendTo()因此將作用於您已建立的外部<div>,並因此應該做正確的事情。

0

你應該扭轉即

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

查找和HTML方法適用於內部DOM元素的順序。除非你將HTML字符串附加到DOM,否則這些jquery方法將不起作用。

方案二

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

不工作...檢查在這裏:http://jsfiddle.net/nbF2H/ – 2010-11-17 12:28:42

+0

檢查更新的代碼 – 2010-11-17 12:30:58

+0

是的......那工作..但爲什麼? – 2010-11-17 12:32:53

0

試試這個:

$(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

今天,我在improvements to security note templates

這是呈現的的例子

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

確保您訪問的是正確的ID。

如果您使用ASP.NET,這可能是因爲ASP.NET改變ID名稱,如果添加「RUNAT =」服務器」。

嘗試使用類名,而不是訪問一下,看看是否有用。

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