2

私は 3 つdivの s を持っています。他の 2 つの div を表示することを選択するオプションをユーザーに提示するメイン div があります。テキストだけを使用し、元の div を非表示にしないと問題なく動作します。しかし、イメージマップを使用してメインの div を非表示にしたい場合は、ユーザーが戻るボタンをクリックして div を再表示し、表示されているものをフェードアウトさせることができます。私はそれを部分的に解決しましたが、JS は私の得意分野ではないため、適切に機能するようにスクリプトを完成させるのに助けが必要です。コードは次のとおりです。

JS

// I am using jQuery Version 1.7.2

var $j = jQuery.noConflict();

//Script for Choosing which form to display
$j("#transformed-link, #changed-link").live('click',
 function(){  

    //figure out what button was clicked. 
    if(this.id === "transformed-link"){
        var btnA = $j(this);
        var btnB = $j("#changed-link");
        var divA = $j('#transformed-aviation');
        var divB = $j('#changed-aviation');
    }
    else{
        btnA = $j(this);
        btnB = $j("#transformed-link");
        divA = $j('#changed-aviation');
        divB = $j('#transformed-aviation');
    }

    //make sure it is not already active, no use to show/hide when it is already set
    if(btnA.hasClass('active')){
        return; 
    }

    //see if div is visible, if so hide, than show first div
    if(divB.is(":visible")){        
        divB.fadeOut("slow", function(){
             divA.fadeIn("slow");
        });
    }
    else{//if already hidden, just show the first div
        divA.fadeIn("slow"); 

         //Add and remove classes to the buttons to switch state
    btnA.addClass('active').removeClass('inactive ');
    btnB.removeClass('active').addClass('inactive ');

    }
}    

);

HTML

<div id="nav-main">
<!-- This is the original main div that users will choose which div to show. -->
<img src="nav-main.jpg" width="940" height="400" usemap="#Map" border="0" />
<map name="Map" id="Map">
  <area shape="rect" coords="52,146,420,258" href="#transformed-link" class="inactive" />
  <area shape="rect" coords="536,145,876,267" href="#changed-link" class="inactive"  />
</map>
</div>

<div id="transformed-aviation" class="hide">
<!-- CONTENT OF DIV -->
Link to return to main div? 
</div>

<div id="changed-aviation" class="hide">
<!-- CONTENT OF DIV -->
Link to return to main div? 
</div>

CSS

/* CSS の大部分はページ固有のものです。nav-main、transformed-aviation、changed-aviation は単なる JS の識別子であり、コードは割り当てられていません。*/

.hide{ display:none; }

私の質問はこれに帰着します:

元の div をフェードアウトして、ユーザーが選択したものにフェードインするにはどうすればよいですか。次に、リンクを使用すると、ユーザーはメインの div に戻ることができます (したがって、現在の div がフェードアウトし、メインまたは元の div がフェードインします)。

元のスクリプトを自由に変更または完全に書き直してください。しかし、私はこのスクリプトを手伝ってくれましたが、自分で書くのに十分な JS を知らないので、例を提供してください。

ありがとう!

4

3 に答える 3

2

http://jsfiddle.net/YzNcR/で再コーディング

を変更しhref="#etc.."href="#"追加しましたid="etc.."- id とクラスを使用するのがより一般的で、hrefs をセレクターとして使用する方が一般的です

他の 2 つの div へのバック リンクを追加しました ( を使用したシンプルなリンクclass="back")

JQuery をもう少し簡潔に書き直しました。簡単に言えば、またはのクラスの ID と一致するものtransformed-linkchanged-linkクリックbackされると、クリック ハンドラーが設定されます。

そこからe.target.name、何がクリックされたか (e はイベント オブジェクト) を確認し、クリックされた内容に基づいてフェードアウトおよびフェードインします。

クリックするtransformed-linkchanged-linkフェードアウトするnav-mainと、適切な div でフェードインします。

クリックbackすると、現在の要素の親 (この場合、バック リンクの親は親 div です) がフェードアウトしてから、フェードインします。nav-main

お役に立てれば。

于 2012-08-16T06:13:52.160 に答える
2

メインに 2 つの s のbackコントロールが必要で、メイン div で div オプションを選択するとします。divdiv

これは動作中のライブデモです。

画像だけでなく、何でも使用できますdiv。JavaScriptを完全に変更しました。さらにヘルプが必要な場合はコメントしてください。

于 2012-08-16T06:31:03.407 に答える
0

タグでは、 でhref="#xxx"ある必要がありますid="xxx"

于 2012-08-16T05:59:05.047 に答える