<div class="parent">
<div class="click"></div>
<div class="subdiv">
<input value="1">
<input value="2">
</div>
</div>
我有以下代码,并点击了onclick
div
事件。现在我想迭代这个特定父input
中的所有div
(有很多)。
所以我写了这样的话:
$(this).parent().children('.subdiv input').not(':checked').length
它应输出类似1或2的内容,具体取决于未选中的input
个。{但它总是显示0。
为什么会这样?
另外,我如何检查/取消选中它们?
$(this).parent().find('.subdiv input').not(':checked').each(function() {
// $(this) is undefined, or shows 0
});
答案 0 :(得分:2)
首先,您应该将这些输入声明为复选框:
<input type="checkbox" value="1" />
然后,点击.parent
元素:
$('.parent').on('click', function() {
// alert the number of checked checkboxes
alert($(this).find('input[type="checkbox"]:checked').length);
});
要检查复选框,请使用prop()
功能:
$('input[type="checkbox"]').prop('checked', true); // sets input to checked state
为了获得复选框的值:
var value = $('input[type="checkbox"]').val();
<强>样本强>
$('.parent').on('click', function() {
var n = $(this).find('input[type=checkbox]:checked').length;
alert('There are ' + n + ' checked checkboxes');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="parent">
<div class="click"></div>
<div class="subdiv">
<input type="checkbox" value="1">
<input type="checkbox" value="2" checked>
</div>
</div>
&#13;
答案 1 :(得分:1)
ASsuming所有输入都是复选框或任何可以检查的内容 使用以下 1&gt;未检查输入
$(this).parent().find('input:checked').length
1&gt;未选中输入数
$(this).parent().find('input').not(':checked').length
答案 2 :(得分:1)
默认情况下,input
为text
。 checked
属性不适用于文本字段。它应该是复选框或无线电。试试 -
<div class="subdiv">
<input type="checkbox" value="1">
<input type="checkbox" value="2">
</div>
答案 3 :(得分:0)
输入文字没有选中/未选中的属性。您需要将类型定义为输入元素的复选框:
<input type="checkbox" value="1">
<input type="checkbox" value="2">
您也可以缩小选择器以获取未选中的复选框:
$(this).parent().find('input:not(:checked)').each(function() {
// $(this) is undefined, or shows 0
});