jquery .text()或.html()不起作用

Vai*_*pta 9 jquery

我正在动态生成div并希望通过html()/ text()更改其内容,但它不起作用.

这是代码:

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');
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,第3行即

$(div).find('.ps_desc').html('<h1>Hello</h1>');
Run Code Online (Sandbox Code Playgroud)

不工作..为什么?

Poi*_*nty 12

问题是你正在重新评估$(div).对尚未添加的DOM片段进行操作的第一行不会更新字符串值"div".因此,第二次创建时,$(div)您将重新开始使用原始片段!

试试这个:

 $(div).find('.ps_desc').html('<h1>Hello World</h1>').end().appendTo($('body'));
Run Code Online (Sandbox Code Playgroud)

jQuery .end()方法"弹出"前一个.find()调用的效果,所以在这种情况下它会让你回到原始导航点,这是你从字符串构建的片段.因此,随后的调用.appendTo()将作用于<div>您构建的外部,因此应该做正确的事情.