如何选中复选框中的text()?

时间:2016-12-04 04:06:43

标签: javascript jquery d3.js checkbox

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

提前致谢!

1 个答案:

答案 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