2016-12-04 10 views
3

私はこの質問が何度も尋ねられていることを知っており、チェックボックスからtext()を得る方法についていくつかの回答を見つけましたが、チェックされたものからのみテキストを取得しようとしたとき、チェックボックスがオンの場合、チェックボックスからtext()を取得するにはどうすればよいですか?

$('input.choose-age').on('change', function() { 
 
    $('input.choose-age').not(this).prop('checked', false); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="checkbox"> 
 
    <label for='wom-10-14' class="checkbox-inline"> 
 
\t <input type="checkbox" id='wom-10-14' class='choose-age' checked />10-14 
 
    </label> 
 
    <label for='wom-15-19' class="checkbox-inline"> 
 
\t <input type="checkbox" id='wom-15-19' class='choose-age' />15-19 
 
    </label> 
 
    <label for='wom-10-19' class="checkbox-inline"> 
 
\t <input type="checkbox" id='wom-10-19' class='choose-age' />10-19 
 
    </label> 
 
</div>

は私がチェックされている場合は、チェックボックスからtext()を選択し、varにそれを保存したい:

は、このコードを考えてみましょう。 d3.jsmapboxを使ってmapDraw関数を実行しているので、別のチェックボックスがオンになっている場合はインジケータを変更したいと思います。私は、この例では、テキストを返すことを知っている

が、しかし、私が探しているものではありません。

var ageLab = $('label[for=wom-10-14]').text(); 

これは私が試したものです:

1.

var ageLab = $('input:checkbox:checked').map(function() { 
    return $(this).prev('label.checkbox-inline').text(); 
}).get(); 

console.log(ageLab); 

出典:example 1

それを返します:

Array[1] 
    0: "" 
    length: 1 

var ageLab = $('.choose-age:checked').text(this.checked ? $(this).text() : ''); 

出典:example 2

はしかし、それが戻ってテキストをdoesn't。

このチェックボックスをオンにすると、チェックボックスからtext()を取得する良い方法がありますか?

ありがとうございます!

答えて

3

チェックボックスの要素は空のため、.text()またはtextプロパティはありません。どちらか一方の価値を得ることができれば、それが定義されていれば、別のアプローチをとることができます。

一番近い

var ageLab = $('input:checkbox:checked').map(function() { 
    return $(this).closest('label.checkbox-inline').text(); 
}).get(); 

スパン

<input type="checkbox" id='wom-10-14' class='choose-age' checked /> <span>10-14</span> 
var ageLab = $('input:checkbox:checked').map(function() { 
    return $(this).next('span').text(); 
}).get(); 

注:あなたが選択した一つだけしたい場合はは、なぜ行きません:radioの場合、:checkboxとは対照的に?

+1

優れています。ありがとう、@Praveen。 'span'ははるかに良く、':radio'も良い選択です。 – estebanpdl

関連する問題