我正在尝试在身体负载上使用JQuery的.each()函数来为图像映射中的不同区域分配功能。它在MSIE中工作正常但在任何其他浏览器中完全失败。如果我对javascript函数进行硬编码并使用以下方法调用它:
href="javascript:cInfo(mapHeadG)"
作为每个区域的属性,它适用于所有浏览器,所以我知道它不是代码本身。我猜它必须是我正在使用的过滤器。任何建议都会有所帮助!
这是图像映射元素:
<map id="mMap1" name="mMap1">
<area coords="44, 13, 116, 14, 123, 21, 36, 21"
shape="poly" alt="" id="mapHeadG" class="mLink" />
<area coords="37, 66, 113, 65, 117, 73, 34, 76"
shape="poly" alt="" id="mapNeckG" />
<area coords="8, 83, 141, 79, 144, 88, 126, 97, 9, 96, 2, 92"
shape="poly" alt="" id="mapShoulderG" />
</map>
这是我用来分配功能的JQuery:
$(document).ready(function () {
$('*[id*=map]:visible').each(function () {
var sec = $(this).attr('id');
alert(sec);
$(this).hover(function () {
//Do something here.
}, function () {
//Do something here.
});
$(this).click(function () {
//Do something else here
})
});
});
(sec变量只是一个测试,看看我是否收到任何信息,这在MSIE中引发但在其他浏览器中不会发生)
您将在javascript中看到alert(sec)
行,这就是我知道该功能在MSIE中工作但在其他工作中没有的情况,以及当我点击MSIE中的映射区域时但在其他人中失败了。
就像我之前说的那样,我几乎肯定它与滤波器本身有关,但我似乎无法找到它。在此先感谢您的帮助!
答案 0 :(得分:0)
看起来像是一种奇怪且耗费人力的方式来进行定位。你有没有试过这个:
$('#mMap1 area:visible').each(function () {
答案 1 :(得分:0)
感谢你们两位的建议(包括失踪者),他们实际上帮助我弄明白了。它是:可见,正在阻止其他浏览器。使用以下内容:
$('#Map1' area).each()
或者在我的情况下,因为我有多个地图
$(*[id*=mMap] area).each()
允许将功能分配给每个图像映射区域。
感谢您的提示,再次感谢。