jQuery id过滤器在MSIE中工作

时间:2012-07-02 15:29:44

标签: jquery internet-explorer firefox google-chrome opera

我正在尝试在身体负载上使用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中的映射区域时但在其他人中失败了。

就像我之前说的那样,我几乎肯定它与滤波器本身有关,但我似乎无法找到它。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

看起来像是一种奇怪且耗费人力的方式来进行定位。你有没有试过这个:

$('#mMap1 area:visible').each(function () {

答案 1 :(得分:0)

感谢你们两位的建议(包括失踪者),他们实际上帮助我弄明白了。它是:可见,正在阻止其他浏览器。使用以下内容:

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

或者在我的情况下,因为我有多个地图

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

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

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