私は自分のウェブサイトのオンラインカレンダーを作成しており、jqueryのremoveClassとaddClass関数を使用して、選択した日の背景を変更したいと考えています。スクリプトは、最初のクリックで正常に機能し、古い日の背景がデフォルトの色に移動され、クリックされた日(td)が強調表示されます。ただし、その後のクリックでは強調表示された色が維持されます。つまり、複数の選択日があります。jquery removeClassが2回目または3回目のクリック後にCSSを取得していません。
私は、.on()live()と他の投稿からのさまざまなif関数を含むさまざまなソリューションを試しました。
$('#calendarGrid td').on("click", function() {
$('#calendarGrid td').removeClass('today');
$(this).addClass('today');
});
私のCSSは次のようになります。私がいるかのように振る舞うよりJavaScriptを持っているとき
#calendarGrid .wEnd{background: #DDD;}
#calendarGrid .wDay{background: #EEE;}
#calendarGrid .today{background: #99BBEE;}
とここに私のテーブル全体を我慢せずに、HTML不思議な
<table id="calendarGrid">
<tr>
<td name='2012-04-07' class='wEnd today' id='a6'>7</td>
<td name='2012-04-08' class='wEnd' id='b0'>8</td>
<td name='2012-04-09' class='wDay' id='b1'>9</td>
</tr>
<table>
です.today
が削除されましたが、CSSは.today
です。
アドバイスありがとうございます。
それの意味論がありますが、 '確保したい場合があります。今日はカレンダーの今日のために、 '.active'は下の私の例のように別の日付をクリックすると使用します。 – pixelbobby
Pixelbobbyありがとう - 良いアドバイス。 –
1. IE6をサポートする必要がない場合、なぜ複数のクラスを使用しないのですか?あなたは代表団を使用する必要があります、パフォーマンスはより良いでしょう。 3. JSfiddleをセットアップするか、jsbinが大いに役立つでしょう) – vincicat