4

私は何かを作成していますが、誰かが 1 つの問題で私を助けることができるかどうか疑問に思っていました。指定された div id を常に非表示にし、別の div (ボタンなど) をクリックするとそれを表示する JavaScript を作成するにはどうすればよいですか。編集:

たとえば、ボタンが 4 つあるとします。

<div class="section" id="info" style="margin-top: 0px; ">
<h3><a href="#">Button</a></h3>
</div>

<div class="section" id="search" style="margin-top: 0px; ">
<h3><a href="#">Button2</a></h3>
</div>

<div class="section" id="player" style="margin-top: 0px; ">
<h3><a href="#">Button3</a></h3>
</div>

<div class="section" id="socials" style="margin-top: 0px; ">
<h3><a href="#">Button4</a></h3>
</div>

ここで、別の div にコンテンツがあり、上からの最初のボタンのクリックでフェードインしたいとしましょう。

    <div id="content-reveal">
    <p>something here</p>
    </div>

    <div id="content-reveal-2">
    <p>something here</p>
    </div>

    <div id="content-reveal-3">
    <p>something here</p>
    </div>

    <div id="content-reveal-4">
    <p>something here</p>
    </div>

わかりました...これで位置が設定され、すべてが正しい場所に配置されました。

<div id="content-reveal">だから...誰かが私のボタンをクリックしたときにそれを非表示にして表示するにはどうすればよいですか?

4つの異なるコンテンツを持つ4つの異なるボタンがあります。そのため、同じボタンをクリックするとコンテンツが再び消え、別のボタンをクリックすると古いコンテンツが消え、新しいコンテンツが表示されます。

簡単な質問ですが、私にとっては難しい作業です...

誰かが助けることができれば、私は本当に感謝しています...

4

6 に答える 6

4

他の答えは、OPが探しているものを十分に得ていないようです。私が理解していることから、OPは次のことを望んでいます:

  • #content-revealページ読み込み時に非表示
  • #content-revealボタンを押すとフェードイン
  • 切り替える必要はありません#content-reveal(つまり、一度表示されたら、表示されたままにする必要があります)。

それに基づいて、ここに私の解決策があります:

$(document).ready( function() {
    $('#content-reveal').hide();
    $('#show-button').click( function() {
        $('#content-reveal').fadeIn( 500 );
    } );
} );​

jsfiddle はこちら: http://jsfiddle.net/xK83w/

編集:OPの質問の編集に基づいて、達成しようとしているものを実行するアプローチを次に示します。

$(document).ready( function() {
    $('#content-reveal').hide();
    $('#info').click( function() {
        $('#content-reveal').fadeOut( 500, function() {
            $('#content-reveal').html( '<b>info HTML</b>' );
            $('#content-reveal').fadeIn( 500 );
        } );
    } );
    $('#search').click( function() {
        $('#content-reveal').fadeOut( 500, function() {
            $('#content-reveal').html( '<b>search HTML</b>' );
            $('#content-reveal').fadeIn( 500 );
        } );
    } );
    // repeat for 'player' and 'socials'
}

ここでjsfiddleを更新しました:http://jsfiddle.net/xK83w/1/

ただし、コンテンツ ブロックに大量の HTML が含まれている場合は、別のアプローチを検討して、大量の HTML テキストで Javascript に負担をかけないようにすることをお勧めします。たとえば、4 つの異なる があり、次divのように選択できます。

<div id="content">

    <div id="content-reveal-info">
    <ul id="newsticker_1" class="newsticker">
        <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</li>
        <li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip...</li>
        <li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum...</li>
        <li>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia...</li>
        <li>Bubble bubble ipsum dolor sit amet, consectetur adipisicing elit...</li>
    </ul>
</div>

<div id="content-reveal-search">
    <b>search HTML</b>
</div>

<div id="content-reveal-player">
    <b>player HTML</b>
</div>

<div id="content-reveal-socials">
    <b>socials HTML</b>
</div>

次に、実際の切り替えを行う関数を作成します。

var activeElement;

function activateElement( eltSuffix ) {
    if( activeElement ) {
        activeElement.fadeOut( 500, function() {
            activeElement = $('#content-reveal-'+eltSuffix);
            activeElement.fadeIn( 500 );
        } );
    } else {
        activeElement = $('#content-reveal-'+eltSuffix);
        activeElement.fadeIn( 500 );
    }
}

最後に、イベント ハンドラーを接続します。

$(document).ready( function() {
    $('#content div').hide();
    $('#info').click( function() {
        activateElement('info');
    } );
    $('#search').click( function() {
        activateElement('search');
    } );
    $('#player').click( function() {
        activateElement('player');
    } );
    $('#socials').click( function() {
        activateElement('socials');
    } );
} );​

jsfiddle はこちら: http://jsfiddle.net/xK83w/1/

于 2012-05-14T20:10:08.307 に答える
3
$('#info a').on('click', function(evt) {
   evt.preventDefault();
   $('#newsticker_1').toggle();
});
于 2012-05-14T20:00:40.617 に答える
2

jQueryを使用する

$(document).ready(function(){
  $("#content-reveal").hide();
  $("#info").click(function(){
     $("#content-reveal").show();
   });

});

クリックするたびに表示/非表示にしたい場合は、$("#content-reveal").show();書き込みの代わりに$("#content-reveal").toggle();

ページの上部に移動しないリンクについては、常に実行してください

<a href="jaavascript:void(0);">Button</a>

于 2012-05-14T20:02:43.347 に答える
1
<div class="section" id="info" style="margin-top: 0px; ">
<h3><a href="#" id="showDiv" rel="hidden">Button</a></h3>
</div>
<div id="content-reveal">
    <ul id="newsticker_1" class="newsticker">
        <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</li>
        <li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip...</li>
        <li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum...</li>
        <li>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia...</li>
        <li>Bubble bubble ipsum dolor sit amet, consectetur adipisicing elit...</li>
    </ul>
</div>

<script type="text/javascript">
$('#showDiv').click(function(e){
   e.preventDefault();
   if($(this).attr('rel') == 'hidden'){
      $('#content-reveal').show();
      $(this).attr('rel', 'shown');
   }
   else
   {
      $('#content-reveal').hide();
      $(this).attr('rel', 'hidden');
   }
}
</script>

もちろん、これを行うための他のやや簡単で小さな方法がありますが、あなたがこれを与えたものを見ると、あなたがすでに持っているものの全体的な概念に影響を与えない私の簡単な表現になります

于 2012-05-14T20:03:55.860 に答える
1

これは、私が作成した簡単な JSFiddle です。ここですでに提供されている概念から構築されています。

http://jsfiddle.net/Talty09/mv7qx/2/

編集: .toggle() の使用

于 2012-05-14T20:18:44.020 に答える
1

これはプレーンな JavaScript ではなく JQuery ですが、参考になるかもしれません

于 2012-05-14T20:00:21.293 に答える