我有一个包含在图片映射中的重复类别为.fancybox。
<map name="Map1" id="Map1">
<area shape="rect" coords="609,235,834,335" href="about.html" class="fancybox" rel="iframe" />
<area shape="rect" coords="649,546,807,565" href="info.html" class="fancybox" rel="iframe" />
<area shape="rect" coords="670,566,781,582" href="help.html" class="fancybox" rel="iframe" />
</map>
<map name="Map2" id="Map2">
<area shape="rect" coords="609,235,834,335" href="contact.html" class="fancybox" rel="iframe" />
<area shape="rect" coords="649,546,807,565" href="comments.html" class="fancybox" rel="iframe" />
</map>
我有一个jQuery数组,想要添加Title属性。我知道它可以在HTML中添加,但是由于图像映射是由服务器端CMS生成的,我无法进行编辑,因此需要通过这个客户端数组提供。
$(document).ready(function() {
var mapDetails = [
//Map1
"About Page",
"Information",
"Get Help",
//Map2
"Contact Me",
"Post Comments"
];
$('.fancybox').each(function() {
$(this).attr('title', mapDetails[$(this).index()]);
})
});
我的问题是,在Map2上它从数组的开头重新开始,而不是像页面上第四个.fancybox一样继续在数组中进行。我猜想这是因为它们有不同的父元素。我是否可以选择所有的.fancybox元素,将它们分配给数组中的标题,并使用jQuery更新HTML,以便页面上所有的.fancybox类按它们出现的顺序从数组中分配? 我也尝试使用相同结果的“区域”选择器:
$('area').each(function() {
$(this).attr('title', mapDetails[$(this).index()]);
})