我正在尝试遍历轮播插件中的每个缩略图,获取每个图像的alt属性,然后将其作为跨度附加。基本上为每张图片添加标题。
我的问题是alt属性总是返回undefined ..
标记是这样的:
<div class="galleria-image">
<img src="http://placehold.it/350x150" alt="Alt caption 1" />
</div>
<div class="galleria-image">
<img src="http://placehold.it/350x150" alt="Alt caption 2" />
</div>
<div class="galleria-image">
<img src="http://placehold.it/350x150" alt="Alt caption 3" />
</div>
剧本:
$(".galleria-image").each(function() {
var thumbN = $(this);
var thumbImgAlt = thumbN.closest('img').attr('alt');
thumbN.append('<span style="color:red;">' + thumbImgAlt + '</span>');
});
我尝试了很多不同的路线,但实际上除了'undefined'或[object,object]之外,实际上无法获得alt文本
非常感谢任何指针,非常感谢。
在这里有一个演示: http://codepen.io/h0rhay/pen/bDFyt
答案 0 :(得分:1)
试试这个,
$(".galleria-image").each(function() {
var thumbN = $(this);
var thumbImgAlt = thumbN.find('img').attr('alt');
thumbN.append('<span style="color:red;">' + thumbImgAlt + '</span>');
});
实际上.closest()将遍历DOM树以选择匹配的元素。但在你的情况下,你应该使用.find()或.children()来实现你的结果
参考:.closest(),.find(),.children()
答案 1 :(得分:1)
closest
查找html树,您希望find
查找后代
var thumbImgAlt = thumbN.find('img').attr('alt');
如有疑问,请检查jQuery API。给出了每种方法的例子
<强> closest() docs 强>
<强> find() docs 强>
答案 2 :(得分:1)
使用children()
而不是closest()
有效。由于所需的图像是galleria-image div的孩子。
$(".galleria-image").each(function() {
var thumbN = $(this);
var thumbImgAlt = thumbN.children('img').attr('alt');
thumbN.append('<span style="color:red;">' + thumbImgAlt + '</span>');
});
children()
也应该更有效率,因为它只会搜索$(this)
div。
答案 3 :(得分:1)