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 で発生しますが、他のブラウザーでは発生しません)

これは、関数がMSIEで機能しているが他の機能では機能していないことalert(sec)を知っている方法です。MSIEでマップされた領域をクリックすると、これは機能しますが、他の領域では失敗します。

前に言ったように、私はそれがフィルター自体に関係していることをほぼ確信していますが、それを見つけることができないようです. 助けてくれてありがとう!

4

2 に答える 2

0

(消えたものも含めて)あなたの提案に感謝し、彼らは実際に私がそれを理解するのを助けてくれました。他のブラウザを停止させていたのは:visibleでした。以下を使用します。

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

または私の場合、複数のマップがあるので

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

各画像マップ領域に機能を割り当てることができます。

ヒントに感謝します。ありがとうございます。

于 2012-07-05T15:15:08.493 に答える
0

ターゲティングを行うには、奇妙で手間のかかる方法のように思えます。代わりにこれを試しましたか:

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