通过提供第二个属性来更改一个属性

Changing an attribute by providing a second one

本文关键字:属性 一个 第二个      更新时间:2023-09-26

我有:

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>';

无论img有多深,我都想通过src属性来获取/设置img标签的alt属性。

I tried:

$(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(function(…)但我就是想不出来。

特别的是,我不能直接在DOM中工作。我的HTML存储在cnt变量中。所以我像这样调用一个函数:

function refreshEditorAlt(src,newalt){
    var cnt=getEditorContent();
    var newcnt = cnt.replace($("img[src$='"+src+"']", cnt).attr('alt'), newalt);
    setEditorContent(newcnt);
}

您可以尝试下面的代码,注意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来解决您的问题。

尝试获取值:

$(cnt).find("img[src$='"+pic+"']").attr('alt');

尝试这样设置值:

$(cnt).find("img[src$='"+pic+"']").attr('alt', newValue);

我认为您的问题是在您定义变量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/