我知道这个问题已经被问过很多次了,我已经找到了一些有关如何从复选框获取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.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

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

资料来源:example 2

但是,它不返回文本。

有没有更好的方法从复选框中获取text(),当被选中。

提前致谢!

最佳答案

复选框元素没有.text()或text属性,因为它们是空元素。如果定义了它们,您要么可以获取它们的值(value),要么可以采用其他方法。

最近

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();

07-24 17:43
查看更多