2012-02-08 25 views
0

さまざまな種類のフラッシュバナーを表示する必要があります。私が理解することができる最高はそれらすべてを隠すことであるタイトルはアンカーの要素を非表示にする別のコンテナをクリック

<!-- list that holds links --> 
<ul id="bannerList" class="list"> 
    <li>Type 
     <ul> 
      <li><a href="#">Flash banner1 120x600</a></li> 
     </ul> 
    </li> 

    <li>Other Type 
     <ul> 
      <li><a href="#">Flash banner2 120x600</a></li> 
     </ul> 
    </li> 
</ul> 

<div id="bannerTarget"> 
    <div class="vert">alpha</div> 
    <div class="horiz">one</div> 
    <div class="horiz">two</div> 
    <div class="horiz">three</div> 
    <div class="horiz">four</div> 
</div> 

#bannerTarget .vert { 
width: 120px; 
height: 600px; 
margin: 0 auto; 
float: left; 
display: none; 
} 

#bannerTarget .horiz { 
width: 728px; 
height: 90px; 
margin: 0 auto; 
float: left; 
display: none; 
} 

をクリックしたときに、私はそれがdiv要素を対応のショーするには、各リンクのクリック機能を書きたいいけない示し、どのように私は機能がより実用的になるだろうか?適切なdivにリンクする際に問題が発生しました

$("ul#bannerList li a").click(function(e) { 
    e.preventDefault(); 
    $parent.addClass("selected").siblings().removeClass("selected"); 
    var href = $(this).attr('href'); 
    $href.css("display","block"); 
}); 

これは機能しません...任意のアイデアですか?あなたはdivのための共通の命名規則などのようなリンクを使用する必要が

答えて

1

<ul id="bannerList" class="list"> 
    <li>Type 
     <ul> 
      <li><a href="#" id="link-1">Flash banner1 120x600</a></li> 
     </ul> 
    </li> 

    <li>Other Type 
     <ul> 
      <li><a href="#" id="link-2">Flash banner2 120x600</a></li> 
     </ul> 
    </li> 
</ul> 

<div id="bannerTarget"> 
    <div class="vert" id="div-1">alpha</div> 
    <div class="horiz" id="div-2">one</div> 
    <div class="horiz" id="div-3">two</div> 
    <div class="horiz" id="div-4">three</div> 
    <div class="horiz" id="div-5">four</div> 
</div> 

あなたのコード、その後は次のようになります。

$("ul#bannerList li a").click(function(e) { 
    e.preventDefault(); 
    $('#bannerTarget > div').hide(); 
    var id = $(this).attr('id').replace('link-',''); 
    $('#div-'+id).show(); 
}); 

また、IDを使用せずに同じことを達成することができますが、リンクオーダーとdivオーダーを同じに保つ必要があります:

+0

クリックした最初のタイトル(タイトル)が表示されますが、2番目のタイトルをクリックすると変更されません。つまり、表示されているものを隠したり、クリックしたものを表示したりすることはありません。また、2つ目の方法を使用し、2つのタイトル(li)と2つのdivのいずれかをクリックすると、最初のバナーが表示されます。 –

+0

男は素晴らしい(最初のもの)魅力のように動作します。私の質問が不明な場合はお詫びしますが、あなたはそれを正確に理解しているようでした。私は本当に助けに感謝します。だから私はそれを理解し、それをコピーして貼り付けるだけでなく、1)divのすべての子を非表示にするbannerTarget(持っている)2)リンクのIDを取って "link-"とダッシュの後の数字に置き換える?そのdivを同じidにマッチさせて表示しますか? –

+0

修正。こうすることで、リンクごとに個別のJSコードを書き直すことなく、リンクとdiv間の一貫性を維持することができます。共通の命名規則を維持するだけで済みます。私は 'index()'を使うことでIDとクラスを避けることができるので、私の2番目の解決法を少し修正します。 –

関連する問題