var template = $(this).parent().next().html()
console.log(template)
chrome console output
<a href="/weishiji/objActivity/timeline/746"><img class="my-pic-head" width="40" height="40" original="/weishiji/avatar/20130121/746.jpg" style="display: block;" src="/weishiji/avatar/20130121/746.jpg"></a>
<p class="co_reply">
<a class="co_reply_name" href="/weishiji/objActivity/timeline/746">test</a>
7 <br>
<abbr title="2013-01-26 11:11:11" class="publishfooter">56 minute</abbr>
</p>
<pre class="delete_reply" id="comment-542">delete</pre>
现在我使用以下代码修改此html中的一些属性。
$(template).find('img').attr('src', 'a')
console.log($(template).html())
chrome console output
<img class="my-pic-head" width="40" height="40" original="/weishiji/avatar/20130121/746.jpg" style="display: block;" src="/weishiji/avatar/20130121/746.jpg">
但这不是我想要的结果,没有改变img src属性值,扔掉了另一个节点我只想改变里面的属性
答案 0 :(得分:0)
我认为您的问题是您将模板设置为等于html()与将其设置为实际对象。试试这个:
var template = $(this).parent().next();
$(template).find('img').attr('src', 'a');
希望这会有所帮助。以下是一些示例fiddle,以确定其有效。
正如@AustinBrunkhorst所指出的那样,这将起到同样的作用:
template.find('img').attr('src', 'a');
祝你好运。
答案 1 :(得分:0)
问题是,你选择的东西已经是一个jquery对象,所以不需要再重新包装它。
我怀疑你所拥有的代码是否存在问题但是如何
这是一个例子
var html = $('#id');
var attr = html.find('img').attr('src' , 'somehtm');
console.log(html.html());