2012-07-02 33 views
0

我正嘗試在身體負載上使用JQuery的.each()函數將功能分配給圖像映射中的不同區域。它在MSIE中正常工作,但在其他瀏覽器中完全失敗。如果我硬編碼的JavaScript功能,並使用調用它:jQuery id篩選器在MSIE中工作

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 
      }) 
     }); 
    }); 

(該仲變量只是測試,以查看是否我獲取任何信息,這在MSIE中觸發,但在其他瀏覽器中不觸發)

您將在j中看到alert(sec)行avascript,這是我知道這個函數在MSIE中的工作方式,而不是在其他的方法中,以及當我單擊MSIE中的映射區域時這種方式可行,但在其他方面失敗的事實。

就像我之前說的,我幾乎肯定它與濾波器本身有關,但我似乎無法找到它。預先感謝任何幫助!

+0

我完全忘了代碼中的某些東西(刪除它沒有想到,對不起)。正如你所看到的,這些區域沒有href。 .each函數中缺少的行是: '$(this).attr('href','#');' 它使區域可選。即使我將它添加到該區域作爲屬性仍然不起作用。 – anjiTechGuy

+0

由於'map'標籤僅僅定義了圖像的命中點,因此是抽象的,你究竟做了什麼?你確定你不應該把你的代碼指向圖像,而不是地圖? – Utkanos

+0

感謝你們兩位的建議,他們實際上幫我弄明白了。這是:可見的是阻止其他瀏覽器。使用下列內容: $( '#地圖1' 區域)。每個() 或者對於我來說,因爲我有一個以上的地圖: $(* [ID * = MMAP]區域)。每個() 允許將功能分配給每個圖像映射區域。 欣賞您的提示,再次感謝。 – anjiTechGuy

回答

0

感謝你們的建議(包括失蹤者),他們真的幫我弄明白了。這是:可見的是阻止其他瀏覽器。使用下列內容:

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

或者對於我來說,因爲我有一個以上的地圖

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

允許的功能分配給每個圖像映射區域。

欣賞您的提示,再次感謝。

0

看起來像一個奇怪的和勞動密集型的方式來做目標。你是否試過這個:

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

感謝您的建議,我按照建議對其進行了更改,在MSIE中按照預期發生了火災,但仍然不會在其他火災中發生。我將href =「#」硬編碼到每個區域,以確保它們是可點擊的,但它是可用的。 – anjiTechGuy