2011-08-29 1 views
0

複数のdivにマウスオーバーエフェクトを使用しています。マウスオーバーはすべてのdivのクラスを操作し、 "class = 'active'"として設定します。今私は特定のイベントの変更を「リセット」します。たとえば、「クリック」します。 複数のdivのクラスを設定する

$(document).ready(function() { 
    switches = $('#switches > span'); 
    slides = $('#slides > div'); 
    switches.each(function(idx) { 
      $(this).data('slide', slides.eq(idx)); 
     }).hover(
     function() { 
      switches.removeClass('active'); 
      slides.removeClass('active');    
      $(this).addClass('active'); 
      $(this).data('slide').addClass('active'); 
     }); 
    }); 

を次のように私のmouseoverscriptは(jQueryのを使用して)であるそして今、私はリセットがうまく機能し、複数のマウスオーバーのdivの結果の最初のdivグループ用のHTMLファイル

<html> 
<head> 

<title>test</title> 

<script type="text/javascript" src="jQuery.js"></script> 
<script type="text/javascript" src="switch.js"></script> 

<style type="text/css"> 

#switches .active { 
    font-weight: bold; 
} 

#slides div { 
    display: none; 
} 

#slides div.active { 
    display: block; 
} 

</style> 

</head> 
<body> 


<div id="slides"> 
    <div id="slide1" class="active">Well well.</div> 
    <div id="slide2">Oh no!</div> 
    <div id="slide3">You again?</div> 
    <div id="slide4">I'm gone!</div> 
</div> 

<div id="switches"> 
    <span id="switch1" class="active">First slide</span> 
    <span id="switch2">Second slide</span> 
    <span id="switch3">Third slide</span> 
    <span id="switch4">Fourth slide</span> 
</div> 


<br><a href = "javascript:void(0)" onclick ="switches.removeClass('active');slides.removeClass('active');$(switch1).attr('class','active');$(slide1).attr('class','active')">Reset</a> 

<div id="slides"> 
    <div id="slide1" class="active">Well well.</div> 
    <div id="slide2">Oh no!</div> 
    <div id="slide3">You again?</div> 
    <div id="slide4">I'm gone!</div> 
</div> 

<div id="switches"> 
    <span id="switch1" class="active">First slide</span> 
    <span id="switch2">Second slide</span> 
    <span id="switch3">Third slide</span> 
    <span id="switch4">Fourth slide</span> 
</div> 

以下でを持っていますしかし、2つ目は何の影響も受けません。この問題を回避するにはどうすればよいですか?

+0

@kingjivが正しい - あなたは同じ文書内の "id"値を再利用することはできません。 "id"を持つ各要素は、**ユニークな** "id"を持っていなければなりません。 – Pointy

+0

http://jsfiddle.net/r4epD/が正しく動作しているように見えますが、 'same id'(' switch1'など)を複数回使用することはできません。 –

答えて

1

問題は、同じIDを持つdivと関係があると思います。 slides_2とswitches_2のような2番目のグループの名前を付け、部分ID $(id^= "slides")でselectを実行してみてください。

+0

ありがとうございました。私がやったのは最初のidの名前を 'slide_i'に変更し、次に' $( '[id^= slide _]')。attr( 'class'、 'active') 'を使ってアクティブなクラスをすべてに設定することでした。 – Marco

4

IDは一意である必要があります。 switchesslidesをIDではなくクラスに変更する必要があります。

関連する問題