jQuery:在元素之间移动属性

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>

我有这个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”的标题相同(他找到的第一个标题)

有什么帮助吗

非常感谢

试试这个:

$('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
vs
a>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');
    });
});