通过提供第二个属性来更改一个属性
Changing an attribute by providing a second one
我有:
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/
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 你能用来自数组的属性名称生成一个对象吗
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- AngularJS:如何用同一对象的另一个属性访问一个属性
- 如何为下拉列表的每个选项添加一个属性
- 如果另一个属性相同,请删除该属性
- Knockout observable没有观察到其中一个属性
- 使用数据属性将HTML数据复制到另一个元素
- 将javascript对象(属性+值)合并到一个对象中
- 使用 JavaScript 一次为一个元素设置多个属性
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- 如何计算一个对象中五个属性中有多少是非null的
- 检查来自不同数组的两个元素的一个属性是否相等
- 获取一个对象´s属性的名称使用字符串
- 选择一个元素,使其最近的具有特殊属性的父元素具有特殊值
- JavaScript-通过类似的属性查找对象,并将其推送到一个新的数组中
- 在html页面的属性周围添加了一个额外的空间
- 谷歌闭包编译器内联了一个重复使用的私有属性 - 一个缺陷还是我错过了什么
- 给一个嵌套的属性/属性一个自定义值