2017-02-03 9 views
0

これをコード化する方法がわかりません.JS/jQueryを初めて使用しています。方法:データ属性がラジオと等しい場合追加クラス

私は達成したラジオボタンのIDを取得したいと思います。私は一致するデータ属性を持つテーブル行<tr>を見つけて、そこにクラスを追加したいと考えています。私の問題は、データの値を見つけようとしている複数のデータの属性がありますので、TRは未定義戻ってくるので、私が行うことができない原因となる属性:

if (dataAttribute = radioSelect) { 
    $(this).addClass("test"); 
} 

基本的に私の問題は、複数のテーブル行であると知らずにそれらを一本化する方法。

は、ここに私のコードのラフな例です:

https://jsfiddle.net/2dsvrhjo/1/

すべてのヘルプははるかに高く評価されます。ここで

+0

'場合(dataAttribute = radioSelect) 'は' dataAttribute'と 'radioSelect'を比較しません – guest271314

+0

@ guest271314私が知っていることは、コードの小さな断片は何もしません、私が達成しようとしているものの一例に過ぎません。私がやろうとしていることを他にどのように記述するかは分かりませんでした。 – user3330820

+0

属性値の等しいセレクタを使用できます。 – guest271314

答えて

4

を一致させるためにチェックされています

$('input[type="radio"]').change(function() { 
 
    // Get Choice for Application 
 
    var application = $('input[name="application"]:checked').prop('id') || ''; 
 
    
 
    // Get all tr's with the selected data-app 
 
    var $trs = $('tr[data-app="'+application+'"]'); 
 
    
 
    // Add your class 
 
    $trs.addClass('highlight'); 
 
    
 
    // Remove the class from all other tr's 
 
    $('tr').not($trs).removeClass('highlight'); 
 
});
.highlight { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <input type="radio" id="Aviation" name="application" />Aviation<br> 
 
    <input type="radio" id="Civil" name="application" />Civil 
 
</div> 
 
<table border="1" style="text-align:center;"> 
 
    <tr> 
 
    <th>Section One</th> 
 
    <th>Section Two</th> 
 
    </tr> 
 
    <tr data-app="Aviation"> 
 
    <td>Lorem Ipsum</td> 
 
    <td>Lorem Ipsum</td> 
 
    </tr> 
 
    <tr data-app="Civil"> 
 
    <td>Lorem Ipsum</td> 
 
    <td>Lorem Ipsum</td> 
 
    </tr> 
 
    <tr data-app="Aviation"> 
 
    <td>Lorem Ipsum</td> 
 
    <td>Lorem Ipsum</td> 
 
    </tr> 
 
    <tr data-app="Civil"> 
 
    <td>Lorem Ipsum</td> 
 
    <td>Lorem Ipsum</td> 
 
    </tr> 
 
</table>

+0

ありがとう!これはうまくいった。 – user3330820

1

単純なケース:

$('input[type="radio"]').on('change',function() { 
     // Get Choice for Application 
    var application = $(this).attr('id'); 
    $('table').find('tr').each(function(i){ 
     if ($(this).attr('data-app') == application){ 
     $(this).addClass('test'); 
     } else { 
     $(this).removeClass('test'); 
     } 

    }); 
}); 

ただ、上記のコードを使用してフィドルを更新します。

このコードは、あなたがそうのように、データの属性によって選択することができます徹底的ループそれぞれのデータアプリ「

+0

これは何かが初めて選択されたときにのみ正しく動作します。値が変更されると、クラスは以前のtrから削除されません。 – Schlaus

+0

これは非常に単純な例です。私はそれがクラスを削除するためのelseステートメントでなければならないことを知っている上記の更新を参照してください。 – Observer

関連する問題