jQuery:在元素之间移动属性
我有这个HTML标记jQuery:在元素之间移动属性,jquery,Jquery,我有这个HTML标记 <a href="#" title=""> <img src="#" title="image1" /> </a> <a href="#" title=""> <img src="#" title="image2" /> </a> <a href="#" title=""> <img src="#" title="image3" /> </a>
<a href="#" title="">
<img src="#" title="image1" />
</a>
<a href="#" title="">
<img src="#" title="image2" />
</a>
<a href="#" title="">
<img src="#" title="image3" />
</a>
但唯一的结果是所有“a”的标题相同(他找到的第一个标题)
有什么帮助吗
非常感谢试试这个:
$('a').each(function() {
var title = $(this).find('img');
var updateTitle = title.attr('title');
$(this).attr({
title: updateTitle,
alt: 'lol'
});
};
attr()方法仅作用于包装集的第一个元素。这同样适用于其他jQuery方法。对于这种情况,使用each实用程序方法非常方便
$(function() {
$('a > img').each(function() {
this.parentNode.title = this.title;
this.parentNode.alt = 'lol';
});
});
或
这里是修改后的函数。您必须循环遍历每个锚点标记并相应地更新其属性
$('a').each(function(){
var title = $(this).find('img');
var updateTitle = title.attr('title');
$(this).attr({
title: updateTitle,
alt: 'lol'
});
});
使用以下项的回调签名:
编辑工作可靠请注意,这比patrick dw的版本效率低。这与我的版本基本相同,是向后的。我认为我的会有更好的性能,因为选择器更简单(
a
vsa>img
)。你怎么看?@lonesomeday-问题是firstChild
在W3C兼容的浏览器中会失败,因为第一个子节点是一个空文本节点,而在IE中,空的空格不会变成文本节点。我还建议有必要检查
,以避免篡改没有子映像的
元素。
$(function() {
$('a:has(img)').attr('title', function() {
return $(this).children('img').attr('title');
}).attr('alt', 'lol');
});
$('a').each(function(){
var title = $(this).find('img');
var updateTitle = title.attr('title');
$(this).attr({
title: updateTitle,
alt: 'lol'
});
});
$(function(){
$('a').attr('title', function() {
return $(this).find('img').attr('title');
});
});