2017-04-10 17 views
1

1つのラジオボタンがチェックされている場合、どのjQuery関数が1つのdiv.card要素にクラスを追加しますか?
1つのすでに確認要素が常に強調表示されますので、それは選択したラジオボタンの周りにdivクラスをハイライト表示しますか?

<div class="col-lg-6 form-check"> 
    <div class="card"> 
     <h3 class="card-header">Headline<small class="text-muted">Subline</small></h3> 
     <label class="form-check-label"> 
      <img class="card-img-left" src="{{ asset('img/image.png') }}"> 
      <div class="card-block"> 
       <p class="card-text">Desciption</p> 
      </div> 
      <input class="hidden-xs-up" type="radio" name="character" value="1" checked> 
     </label> 
    </div> 
</div> 

the goal: highlight a checked area

+0

https://api.jquery.com/addclass/のhttp:/ /api.jquery.com/toggleclass/そしてページの後ろにあなたのバックエンドのものでそれに近づく方法についてのすべてをロードしてください –

答えて

0

:-)あなたがチェックの親であるすべての.cardの要素を見つけることができ、クリックについて(ページロード後の例)ではありませんラジオボタンclosestを使用してください。ドキュメントとして

$('input[type="radio"]:checked').closest('.card').addClass('checked') 

氏は述べています:セット内の各要素について

を、要素自体をテストし、DOMツリー内のその先祖を通って上に横断することにより、セレクタに一致する最初の要素を取得します。

ここでは、少し簡略化したデモです。もちろん

$('input[type="radio"]:checked').closest('.card').addClass('checked')
.card { 
 
    background: grey; 
 
} 
 

 
.card.checked { 
 
    background: red; 
 
}
<div class="card"> 
 
    <label><input type="radio" name="character">Character 1</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 2</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character" checked>Character 3</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 4</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 5</label> 
 
</div> 
 

 
<script src="http://code.jquery.com/jquery-2.2.4.min.js" 
 
\t \t \t integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" 
 
\t \t \t crossorigin="anonymous"></script>

、あなたはまだときのチェックボックスの状態が変化し、そのクラスを更新する必要があります。この簡略化されたデモは、それがどのように行われるかを示しています

// set initial state 
 
var $checked = $('input[type="radio"]:checked'); 
 
$checked.closest('.card').addClass('checked'); 
 

 
// update on change 
 
$('input[type="radio"]').change(function() { 
 
    $checked.prop('checked', false).closest('.card').removeClass('checked'); 
 
    $checked = $(this); 
 
    $checked.closest('.card').addClass('checked'); 
 
});
.card { 
 
    background: grey; 
 
} 
 

 
.card.checked { 
 
    background: red; 
 
}
<div class="card"> 
 
    <label><input type="radio" name="character">Character 1</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 2</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character" checked>Character 3</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 4</label> 
 
</div> 
 
<div class="card"> 
 
    <label><input type="radio" name="character">Character 5</label> 
 
</div> 
 

 
<script src="http://code.jquery.com/jquery-2.2.4.min.js" 
 
\t \t \t integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" 
 
\t \t \t crossorigin="anonymous"></script>

+0

ありがとう、私はまた、今jQueryでもう少し自信があると感じます!この小さなコードがjQueryファイルの後にロードされなければならない理由をすぐに説明することで、最後のクッキーを教えてください。あるいは、document.ready()のような別の方法がありますか? jQueryの前にaddClassをロードするのは理にかなっていますか?この小さなコードを文書の最後/ jQueryの後に埋め込むのは気が気です:) – Bensen

+0

確かに!関数を使用するのでjQueryをロードする必要があるため、定義する必要があります。ドキュメントもロードする必要があります。そうしないと、クラスを変更する要素がまだロードされていません。 jQueryは実際にこのためのコールバックを持っています。詳しくは、[このページ](https://learn.jquery.com/using-jquery-core/document-ready/)を参照してください。希望が助けてくれる! –

0

ただ、ボックスがチェックされているかどうかを確認して.addClassを(使用)ので、のような:

if($('input[type="radio"]').is(':checked')) { 
    $(this).closest('.card').addClass('selected'); 
}; 
関連する問題