我尝试将title属性中的文本附加到span
元素中。问题是我的each function
无法正常工作,因此它会向所有元素添加相同的文字。
我做错了什么?
HTML
<div class="item topitem"
<a href="#">
<img src="#"></a>
<a href="#" title="text to ad to span from first element" class="topdesc"><span>.
</span></a>
</div>
<div class="item topitem"
<a href="#">
<img src="#"></a>
<a href="#" title="text to ad to span from second element" class="topdesc"><span>.
</span></a>
</div>
脚本
$.each($('.topitem a.topdesc span'), function() {
$(this).replaceWith('<span style="text-align:center;">'+ (".item.topitem div a.topdesc ").attr('title')+'</span>');
})
答案 0 :(得分:1)
您可以迭代.topitem a.topdesc
选择其title属性并将其设置为其中跨度的html。
$('.topitem a.topdesc').each(function() {
var title = $(this).attr("title");
$(this).find("span").html(title);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item topitem"
<a href="#">
<img src="#">
</a>
<a href="#" title="text to ad to span from first element" class="topdesc">
<span>.
</span></a>
</div>
<div class="item topitem"
<a href="#">
<img src="#"></a>
<a href="#" title="text to ad to span from second element" class="topdesc">
<span>.
</span></a>
</div>
&#13;
答案 1 :(得分:-1)
代码中的问题是$(".item.topitem div a.topdesc ").attr('title')
。此代码将始终以元素的第一个外观为目标。您需要获取当前目标元素标题,而不是像上面那样。您可以使用closest
获取当前目标元素标题,如下所示。
$(this).closest("a.topdesc").attr('title')
$.each($('.topitem a.topdesc span'), function() {
$(this).replaceWith('<span style="text-align:center;">' + $(this).closest("a.topdesc").attr('title') + '</span>');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item topitem">
<a href="#">
<img src="#"></a>
<a href="#" title="text to ad to span from first element" class="topdesc"><span>.
</span></a>
</div>
<div class="item topitem">
<a href="#">
<img src="#"></a>
<a href="#" title="text to ad to span from second element" class="topdesc"><span>.
</span></a>
</div>