我想用已知的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个小时处理这个小问题。
答案 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');
答案 2 :(得分:0)
尝试使用filter(),而不是find()