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

时间:2014-05-13 12:42:12

标签: javascript 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>';

我想通过给出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);
}

3 个答案:

答案 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);

Demo.

请注意,您应该将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/