2016-11-20 9 views
0

私の計画:Jquery固有のIDの記事のコンテンツが表示されません

メニューアイテム(コンテンツ部門内の記事にリンクされています)。当初、すべての記事は隠されています。しかし、メニュー項目が選択されると、コンテンツ部門は、ヒットしたメニュー項目に対応する記事のみを表示する必要があります。他のメニュー項目についても同じ話です。

私はJSを初めて利用しています。別々の記事が表示されない理由を理解できません。最初はすべてを隠す機能が働いています。

私のhtmlコード:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"/> 
     <title>Hartmeting</title> 

     <link rel="stylesheet" href="css/stylesheet.css" type="text/css"> 
     <script src="js/jquery-3.1.1.js" type='text/javascript'></script> 
     <script src="js/scripts.js" type='text/javascript'></script> 
    </head> 

    <body> 
     <div id="wrapper"> 
      <header id="titel"> 
       <h1>Heartmeasurement</h1> 
      </header> 

      <!-- Menu --> 
      <nav id="menu"> 
       <ul> 
        <li><a href="#menu_a">Introduction</a></li> 
        <li><a href="#menu_b">The Problem</a></li> 
        <li><a href="#menu_c">The Manual</a></li> 
        <li><a href="#menu_c">Measuring the heart</a></li> 
       </ul> 
      </nav> 

      <!-- The Articles --> 
      <div id="content"> 
       <!-- Intro Article --> 
       <article id="menu_a"> 
        <h2>Introduction</h2> 
        <figure> 
         <img src="http://placehold.it/150x150" , alt="Intro img"/> 
        </figure> 
        <p> bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
       </article> 

       <!-- Article 1 --> 
       <article id="menu_b"> 
        <h2>The Problem</h2> 
        <figure> 
         <img src="http://placehold.it/150x150" , alt="First img"/> 
        </figure> 
        <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
       </article> 

       <!-- Article 2 --> 
       <article id="menu_c"> 
        <h2>The Manual</h2> 
        <figure> 
         <img src="http://placehold.it/150x150" , alt="Second Article"/> 
        </figure> 
        <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
       </article> 

       <!-- Article 3 --> 
       <article id="menu_d"> 
        <h2>Measuring Your Heart</h2> 
        <figure> 
         <img src="http://placehold.it/150x150" , alt="Third img"/> 
        </figure> 
        <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
       </article> 
      </div> 

      <footer> 
       <a href="#wrapper"> To the Top </a> 
      </footer> 
     </div> 
    </body> 
</html> 

私のJSコード:

$(document).ready(function() { 
    $('#content').hide(); 
}); 

var visible = $('#menu_a').first(); 
//visible.show(); this was a test and it did NOT work!!!!!! 

var show_me = function(article){ 
    visible.hide(); 
    visible = article; 
    visible.show(); 
} 

$("#menu_a").click(function(event) { 
    var id_of_article = $(this).attr('href'); 
    var the_article = $(id_of_article); 
    show_me(the_article); 
    even.preventDefault(); 
}); 

なぜこれが動作しませんか?コンソールにエラーは表示されません。

多分すべての記事が 'content' id内にあるためですか?

答えて

1

CSSのソリューションは、本当に素晴らしいですが、使用したい場合は)かなり明白だろうjQuery、ここはjQueryバージョンです。

あなたはこれを過度に複雑にしています。主な問題の1つは、記事を執筆するあなたのコンテンツ/コンテナが常に隠されていることです。この問題を解決するには、かなりの記事を隠す:

article { 
    display:none; 
} 

とjQuery簡素化:

$("#menu ul li a").click(function() { 

var id_of_article = $(this).attr('href'); 
$('article').not($(id_of_article)).hide(); 
$(id_of_article).show(); 

even.preventDefault(); 


}); 

デモ:https://jsfiddle.net/7kd16e1b/1/

+0

非常に清潔な溶液です。私はjsfiddleをうまくやってみました。自分のコードで試してみるとうまくいきません。これはまさに私のコードのようです:https://jsfiddle.net/7kd16e1b/6/(それは記事の要素を隠しています)が、クリックごとの記事を非表示/表示しません。 – user7186935

+0

jqueryライブラリとmy jsコードを含む要素をbody要素の末尾に配置することで修正しました。ご協力いただきありがとうございます。 – user7186935

+0

@ user7186935、np、喜んで助けてください! (何が間違っているのか分かりませんでした。 Btw、jsfiddleでは、jqueryはデフォルトでロード時に実行されるため、doc.readyラッパーを記述する必要はありません。 – sinisake

2

これにJSを使用する理由はまったくありません。

あなたはこのちょうど使用してCSSを行うことができます。

(ああ、ところで、あなたのjsが機能していない理由は、あなたが全体の親コンテナを隠すために、そして隠されたコンテナ内のものを表示しようとしています)。メニュー内のリンクをクリックしながら、あなたのブラウザのDEV-ツールを見た場合、それは前の回答から

article { 
 
    display: none; 
 
    } 
 
[id^=menu_]:target { 
 
    display: block; 
 
    }
<div id="wrapper"> 
 
       <header id="titel"> 
 
        <h1>Heartmeasurement</h1> 
 
       </header> 
 

 
         <!-- Menu --> 
 
         <nav id="menu"> 
 
         <ul> 
 

 
          <li><a href="#menu_a">Introduction</a></li> 
 
          <li><a href="#menu_b">The Problem</a></li> 
 
          <li><a href="#menu_c">The Manual</a></li> 
 
          <li><a href="#menu_c">Measuring the heart</a></li> 
 
         </ul> 
 

 
         </nav> 
 

 
          <!-- The Articles --> 
 
          <div id="content"> 
 

 
            <!-- Intro Article --> 
 
            <article id="menu_a"> 
 
             <h2>Introduction</h2> 
 
              <figure> 
 
               <img src="http://placehold.it/150x150" , alt="Intro img"/> 
 
              </figure> 
 
              <p> bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
 
            </article> 
 

 
            <!-- Article 1 --> 
 

 
            <article id="menu_b"> 
 
             <h2>The Problem</h2> 
 
              <figure> 
 
               <img src="http://placehold.it/150x150" , alt="First img"/> 
 
              </figure> 
 
              <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
 
            </article> 
 

 
            <!-- Article 2 --> 
 

 
            <article id="menu_c"> 
 
             <h2>The Manual</h2> 
 
              <figure> 
 
               <img src="http://placehold.it/150x150" , alt="Second Article"/> 
 
              </figure> 
 
              <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
 
            </article> 
 

 
            <!-- Article 3 --> 
 

 
            <article id="menu_d"> 
 

 
             <h2>Measuring Your Heart</h2> 
 
              <figure> 
 
               <img src="http://placehold.it/150x150" , alt="Third img"/> 
 
              </figure> 
 
              <p>bla bla bla bla bla bla bla bla bla bla bla bla bla bla...</p> 
 

 
            </article> 
 

 
          </div> 
 

 
       <footer> 
 
        <a href="#wrapper"> To the Top </a> 
 
       </footer> 
 

 
      </div>

+0

感謝を!私はjsを勉強しようとしているので、私はjsに固執するつもりです。 – user7186935

関連する問題