我有:
var cnt = '
<img alt="pic1" src="/data/18139/1.jpg" />
<div>
<p>
<img alt="pic2" id="zwei" src="/data/18139/2.jpg" />
</p>
<img alt="pic3" src="/data/18139/3.jpg" />
</div>';
我想通过给出src属性来获取/设置img标签的alt属性,无论img有多深。
我试过了:
$(cnt).find("img[src$='"+pic+"']").attr('alt'); //can only get the object
$(cnt).filter("img[src$='"+pic+"']").attr('alt') //can only get the alt on the root of thre DOM.
还尝试了一些组合和.find(功能(......但我根本无法解决)。
特别的是,我无法直接在DOM中工作。我的HTML存储在cnt变量中。所以我在调用这样的函数:
function refreshEditorAlt(src,newalt){
var cnt=getEditorContent();
var newcnt = cnt.replace($("img[src$='"+src+"']", cnt).attr('alt'), newalt);
setEditorContent(newcnt);
}
答案 0 :(得分:0)
尝试此操作以获取值:
$(cnt).find("img[src$='"+pic+"']").attr('alt');
尝试此设置值:
$(cnt).find("img[src$='"+pic+"']").attr('alt', newValue);
答案 1 :(得分:0)
您可以尝试使用此代码,请注意jQuery方法可以帮助您:
var cnt = '<img alt="pic1" src="/data/18139/1.jpg" /><div><p><img alt="pic2" id="zwei" src="/data/18139/2.jpg" /></p><img alt="pic3" src="/data/18139/3.jpg" /></div>';
var $cnt = $("<div>" + cnt + "</div>");
//input
var src = "/data/18139/1.jpg";
var newAlt = "Xpic";
//update new alt
$cnt.find("img[src$='" + src + "']").attr('alt', newAlt);
//output
cnt = $cnt.html();
$('#out').text(cnt);
请注意,您应该将cnt
包装到某个元素(例如<div></div>
)中,以便您可以使用jQuery来解决问题。
答案 2 :(得分:0)
我认为您的问题在于您已定义变量cnt的换行符。所以你想要:
var cnt = '<img alt="pic1" src="/data/18139/1.jpg" /><div><p><img alt="pic2" id="zwei" src="/data/18139/2.jpg" /></p><img alt="pic3" src="/data/18139/3.jpg" /></div>';
然后这样的事情会奏效:
alert($(cnt).find("img[src$='/data/18139/2.jpg']").attr('alt'));
显然,您希望将src的值传递给函数或其他东西,但希望这可以解决您的问题。
快速演示,以此方式展示http://jsfiddle.net/4z5Sh/