2016-12-04 112 views
3

我知道这个问题已被询问很多次,并且我已经找到了一些关于如何从复选框中获得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(); 

这是我的尝试:

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()或复选框元素的文本属性,因为它们是空的。要么你可以得到它们的价值,如果定义的话,否则,我们可以采取不同的方法。

最近

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

相关问题