2

我有一个只存在于内存中的 div,它可能包含零个或多个图像。我正在尝试使用 JQuery find 更改 thouse 图像的 src,问题是即使我管理器设置每个 img 的 src,div 的内容仍然保持不变。

    function contentWithReplacedImages(divContent){
    console.log(divContent);//I get <div class='editable singleColumnElement'><p>asdasd ad a dasd ad<br/></p><p><img/> <br/></p></div>
    $(divContent).find("img").each(function(index){
        $(this).attr({
            'src':"imgSrc"
        });
        console.log($(this).attr('src'));//I get "imgSrc"
    });

    console.log(divContent); //divContent remains unchanged.

}
4

2 回答 2

5

您已更改$(divContent)(jQuery 对象),但最后您正在检查原始内容divContent(html 字符串)。

由于divContent它实际上不是 DOM 的一部分,因此您不会将更改保存在任何地方。

尝试设置一个新变量:

function contentWithReplacedImages(divContent) {
     var $temp = $(divContent); // jQuery object
     $temp.find("img").each(function (i,el) {
         $(el).attr({
             'src': "imgSrc.jpg"
         }); // $temp is modified in place
     });    
     console.log($temp.html()); // displays the modified string 
 }
于 2013-03-20T13:43:48.367 回答
2

这会创建一个新元素...

$(divContent)

然后,您可以在该新元素中找到图像并更改 src 属性。你在任何时候都没有改变divContent自己。

尝试这个...

function contentWithReplacedImages(divContent){
    console.log(divContent);
    var $divContent = $(divContent);
    $divContent.find("img").each(function(index){
        $(this).attr({
            'src':"imgSrc"
        });
        console.log($(this).attr('src'));
    });
    divContent = $divContent.html();
    console.log(divContent);
}

contentWithReplacedImages("<div class='editable singleColumnElement'><p>asdasd ad a dasd ad<br/></p><p><img/> <br/></p></div>");
于 2013-03-20T13:43:34.460 回答