0

我正在尝试在身体负载上使用 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 中触发,但不会在其他浏览器中触发)

您将alert(sec)在 javascript 中看到该行,这就是我如何知道该函数在 MSIE 中工作但在其他人中不工作的方式,以及当我单击 MSIE 中的映射区域时这工作但在其他人中失败的事实。

就像我之前说的,我几乎肯定它与过滤器本身有关,但我似乎找不到它。提前感谢您的帮助!

4

2 回答 2

0

似乎是一种奇怪且劳动密集型的定位方式。你有没有试过这个:

$('#mMap1 area:visible').each(function () {
于 2012-07-02T15:33:38.777 回答
0

感谢你们两位的建议(包括消失的那个),他们实际上帮助我解决了这个问题。是 :visible 停止了其他浏览器。使用以下内容:

$('#Map1' area).each()

或者就我而言,因为我有不止一张地图

$(*[id*=mMap] area).each() 

允许将功能分配给每个图像映射区域。

感谢您的提示,再次感谢。

于 2012-07-05T15:15:08.493 回答