通过src在htmlstring上获取alt

时间:2014-05-12 11:57:11

标签: jquery html parsing selector

我想用已知的src获取/更改img的alt属性。 问题是,我不能直接在DOM中工作。我的HTML存储在一个变量中。

我有一个HTML编辑器和我自己的图片编辑器。更改piceditor中的图片子行应更新HTML编辑器中的附属img标记。

我得到的最好的是内容的第一个alt属性。我永远不会得到第二个。 我尝试了很多方法,现在我被卡住了。

cnt=getEditorContent();

cnt看起来像这样:

<img alt="pic1" src="/data/18139/1.jpg" />
<img alt="pic2" src="/data/18139/2.jpg" />
<img alt="pic3" src="/data/18139/3.jpg" />

整个功能如下:

function refreshEditorAlt(src,newalt){
    var cnt;
    cnt = getEditorContent();

    alert($(cnt).html('img[src="'+src+'"]').attr('alt'));
    alert($(cnt).find('img[src="'+src+'"]').attr('alt'));
    setEditorContent(cnt);
}

我在html(...)部分写的内容似乎并不重要。 我也试过parseHTML,但也只能获得第一个alt。

如果有人可以帮助我,我会很高兴的。我已经花了6个小时处理这个小问题。

3 个答案:

答案 0 :(得分:1)

Here is an example你怎么做。您需要在代码中进行相关更改。

function refreshEditorAlt(src,newalt){
    var cnt = '<img alt="pic1" src="/data/18139/1.jpg" /><img alt="pic2" src="/data/18139/2.jpg" /><img alt="pic3" src="/data/18139/3.jpg" />';
    var $imgToChange = $(cnt).filter(function(){ return this.src.indexOf(src) != -1 });
        $imgToChange.attr('alt', newalt);
    alert($imgToChange.attr('alt'));
}

refreshEditorAlt('/data/18139/1.jpg', 'new alt');

答案 1 :(得分:1)

我相信这样的事情会满足你的需求:

  var cnttest = '<img alt="pic1" src="/data/18139/1.jpg" /><img alt="pic2" src="/data/18139/2.jpg" /><img alt="pic3" src="/data/18139/3.jpg" />';

 function refreshEditorAlt(src,newalt){
   var cnt;
   cnt = cnttest;


     var newcnt = cnt.replace($(cnt).html('img[src="'+src+'"]').attr('alt'), newalt);
     alert(newcnt);
     //setEditorContent(cnt);
}

 refreshEditorAlt('/data/18139/1.jpg', 'some new alt');

fiddle link

答案 2 :(得分:0)

尝试使用filter(),而不是find()