修改dom节点属性,并保存此HTML段

时间:2013-01-26 04:10:06

标签: javascript jquery

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属性值,扔掉了另一个节点我只想改变里面的属性

2 个答案:

答案 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());

http://jsfiddle.net/SxQMw/