我知道这个问题已被多次询问了,我已经找到了一些关于如何从复选框中获取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">
<input type="checkbox" id='wom-10-14' class='choose-age' checked />10-14
</label>
<label for='wom-15-19' class="checkbox-inline">
<input type="checkbox" id='wom-15-19' class='choose-age' />15-19
</label>
<label for='wom-10-19' class="checkbox-inline">
<input type="checkbox" id='wom-10-19' class='choose-age' />10-19
</label>
</div>
如果选中,我想从复选框中选择text()
并将其保存到var
。我使用d3.js
和mapbox
来运行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
2
var ageLab = $('.choose-age:checked').text(this.checked ? $(this).text() : '');
来源:example 2
但是,它不会返回文本。
检查时,是否有更好的方法可以从复选框中获取text()
。
提前致谢!
答案 0 :(得分: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
?