3

jQuery を使用してインタラクティブ マップを作成していますが、解決できない問題がいくつかあります。

  1. 基本的に、黒い四角をクリックするとすぐに赤くなりたいのですが、今は逆に機能します(2回目のクリックから赤くなります)。fadeToggle();を逆にする方法はありますか? 関数?しかし、私はまだマウスオーバーマウスアウトのイベントでアニメーションをフェードさせたいと思っています。

  2. 2番目の問題は、黒い四角を「単独で」クリックするか、左側の「オプションリンク」をクリックすると赤に変わりますが、ホバーしても赤のままではありません。(正方形がクリックされた後、どうにかしてmouseoverおよびmouseoutイベントのバインドを解除したい)。そして、もう一度クリックすると、0 にフェードアウトします。

デモ: http://jsfiddle.net/antondesign/8JHCe/

jQuery スクリプト

$('ul.list li a').click(function(e) {
    e.preventDefault();
    var productTitle = $(this).attr("title");
        $('.p-'+ productTitle).siblings().hide();
        $('.p-'+ productTitle).stop(true, true).animate({ opacity: "show" }, "slow");
        $('.p-'+ productTitle).unbind('mouseover mouseout');     
    });

// Check if map exists
if($('#map')) {

    // Loop through each AREA in the imagemap
    $('#map area').each(function() {
        var productIcon = $(this).attr('id').replace('area-', '');   

        // Assigning an action to the click event
        $(this).click(function(e){  
            e.preventDefault();              
            $('#'+productIcon).stop(true, true).fadeToggle('slow', function(e){
            $(this).unbind('mouseover').unbind('mouseout');
            });
        });            

    // Assigning an action to the mouseover event
        $(this).bind("mouseover", function(e) {
            $('#'+productIcon).stop(true, true).fadeTo(500, 1);
            e.preventDefault();
         });

    // Assigning an action to the mouseout event
        $(this).bind("mouseout", function(e) {
            $('#'+productIcon).stop(true, true).fadeOut(500, 0);
            e.preventDefault();
        });

   });

}
4

1 に答える 1

0

クリックした要素にいくつかのクラスを適用してから、mouseoverおよびmouseoutイベントで、フェードアウトまたは操作を実行する前に、クラスが適用されているかどうかを確認できます。jsfiddleコードを更新しました。ここで確認できます:

http://jsfiddle.net/8JHCe/8/

お役に立てれば。

于 2012-05-24T08:41:00.503 に答える