2017-12-04 6 views
0

私は、各行にボタングループを持つHTMLテーブルを持っています。ユーザーがボタンを選択すると、そのボタンをハイライトしたいが、他のボタンはハイライトしたくない。私はこれを行うためにクラスを使用しようとしています。しかし、他の2つのボタンからこのクラスを削除するにはどうしたらいいですか?ここでjQueryを使用してボタングループの1つのボタンにクラスを追加する方法は?

.selectedAnswer { 
    font-weight: bold; 
    border: 1px solid blue; 
} 

<table> 
    <tr> 
    <td> 
     Question 1 
    </td> 
    <td> 
     <div class="btn-group" role="group" aria-label="..." id="Rating"> 
     <button type="button" id="btnYes" value="yes" class="btn btn-default btn-response" data-rating="Yes">Yes</button> 
     <button type="button" id="btnNo" value="no" class="btn btn-default btn-response" data-rating="No">No</button> 
     <button type="button" id="btnNa" value="na" class="btn btn-default btn-response" data-rating="NA">N/A</button> 
     </div> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     Question 2 
    </td> 
    <td> 
     <div class="btn-group" role="group" aria-label="..." id="Rating"> 
     <button type="button" id="btnYes" value="yes" class="btn btn-default btn-response" data-rating="Yes">Yes</button> 
     <button type="button" id="btnNo" value="no" class="btn btn-default btn-response" data-rating="No">No</button> 
     <button type="button" id="btnNa" value="na" class="btn btn-default btn-response" data-rating="NA">N/A</button> 
     </div> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     Question 3 
    </td> 
    <td> 
     <div class="btn-group" role="group" aria-label="..." id="Rating"> 
     <button type="button" id="btnYes" value="yes" class="btn btn-default btn-response" data-rating="Yes">Yes</button> 
     <button type="button" id="btnNo" value="no" class="btn btn-default btn-response" data-rating="No">No</button> 
     <button type="button" id="btnNa" value="na" class="btn btn-default btn-response" data-rating="NA">N/A</button> 
     </div> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     Question 4 
    </td> 
    <td> 
     <div class="btn-group" role="group" aria-label="..." id="Rating"> 
     <button type="button" id="btnYes" value="yes" class="btn btn-default btn-response" data-rating="Yes">Yes</button> 
     <button type="button" id="btnNo" value="no" class="btn btn-default btn-response" data-rating="No">No</button> 
     <button type="button" id="btnNa" value="na" class="btn btn-default btn-response" data-rating="NA">N/A</button> 
     </div> 
    </td> 
    </tr> 

</table> 

jQueryのは...

//Set up click event on the Remove button 
$('.btn-response').click(function(event) { 
    $(this).addClass("selectedAnswer"); 
}); 

リンクです。これを行うには良い方法でhttps://jsfiddle.net/webdevguy2/0mzjyvw2/2/

任意の提案ですか?

答えて

4

jQuery APIの.siblings()について読んでください。これに

$('.btn-response').click(function (event) { 
    $(this).addClass("selectedAnswer"); 
}); 

:この

変更

$('.btn-response').click(function (event) { 
    $(this).addClass("selectedAnswer").siblings().removeClass("selectedAnswer"); 
}); 
0

あなたのアプローチは完全に十分です。クラスを追加する前にまず.btn-responseからクラスを削除するのを忘れてしまった。それを行うための最も簡単な方法は、ちょうどあなたのスクリプトを変更します

$('.btn-response').click(function (event) { 
    // We're removing the class here 
    $('.btn-response').removeClass("selectedAnswer"); 

    // And were adding it to JUST THE CLICKED ONE here 
    $(this).addClass("selectedAnswer"); 
}); 
+1

これは、ページ上の任意のボタンからクラスを削除し、その質問ではないだけのものでしょう。 –

+0

Bah!私はOPの質問を間違って読んで、彼らが望んだものだと思っていました。あなたの答えは '.siblings()'に関係しています。 –

関連する問題