我有这个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”上。我尝试用这个功能
$(function() {
var title = $('a').find('img');
var updateTitle = title.attr('title');
$('a').attr({
title: updateTitle,
alt: 'lol'
});
});
但唯一的结果是所有“a”(他找到的第一个标题)的标题相同
任何帮助????
非常感谢
答案 0 :(得分:1)
$(function() {
$('a > img').each(function() {
this.parentNode.title = this.title;
this.parentNode.alt = 'lol';
});
});
或
$(function() {
$('a:has(img)').attr('title', function() {
return $(this).children('img').attr('title');
}).attr('alt', 'lol');
});
答案 1 :(得分:0)
试试这个:
$('a').each(function() {
var title = $(this).find('img');
var updateTitle = title.attr('title');
$(this).attr({
title: updateTitle,
alt: 'lol'
});
};
attr()方法仅作用于包装集的第一个元素。这同样适用于其他jQuery方法。对于这样的情况,使用每种实用方法非常方便。
答案 2 :(得分:0)
这是修改过的功能。您必须遍历每个锚标记并相应地更新其属性
$('a').each(function(){
var title = $(this).find('img');
var updateTitle = title.attr('title');
$(this).attr({
title: updateTitle,
alt: 'lol'
});
});
答案 3 :(得分:0)
使用attr
的回调签名:
$(function(){
$('a').attr('title', function() {
return $(this).find('img').attr('title');
});
});
编辑可靠地工作请注意,这比patrick dw的版本效率低。