我有以下内容:
<input name="Check100" type="checkbox">
<tr>
<td><input name="ClassIDs" type="checkbox" value="3132">
<td>50</td>
</tr>
<tr>
<td><input name="ClassIDs" type="checkbox" value="3133">
<td>100</td>
</tr>
<script>
$('input[name=Check100]').change(function() {
var myChecked = $(this).attr('checked');
$('input:checkbox').attr('checked',myChecked);
});
</script>
但我需要做的是切换第2列中包含100的所有输入。
答案 0 :(得分:2)
我首先考虑使用:contains(),但是当我阅读文档时,我意识到它确切地检查它所说的内容,如果它包含某些内容,则不是完全匹配。我没有找到任何速记功能,但您可以使用filter()。
例如,:contains('100')也将匹配1000。
<强>代码:强>
$('input[name=Check100]').change(function() {
var myChecked = $(this).attr('checked');
$('td').filter(function() {
return $(this).text() == "100";
}).prev('td').find(':checkbox').attr('checked', myChecked);
});
示例: http://jsfiddle.net/FEP5u/
增强版: http://jsfiddle.net/FEP5u/2/
在元素上使用ID并作为选择器可以提高速度。 HTML规范(我认为)应该删除像checked这样的属性而不是设置为false。
<强> HTML:强>
<input name="Check100" id="Check100" type="checkbox">
<table id="myTable">
<tr>
<td><input name="ClassIDs" type="checkbox" value="3132"></td>
<td>50</td>
</tr>
<tr>
<td><input name="ClassIDs" type="checkbox" value="3133"></td>
<td>1000</td>
</tr>
<tr>
<td><input name="ClassIDs" type="checkbox" value="3134"></td>
<td>100</td>
</tr>
</table>
<强>使用Javascript:强>
$(function(){
$('#Check100').change(function() {
var $checkbox = $('#myTable td')
.filter(function() {
return $(this).text() == "100";
}).prev('td').find(':checkbox');
if(this.checked)
$checkbox.attr('checked', 'checked');
else
$checkbox.removeAttr('checked');
});
});
答案 1 :(得分:1)
试试这个:
$('input[name=Check100]').change(function() {
var myChecked = $(this).attr('checked');
$('td:contains(100)').prev('td').find(':checkbox').attr('checked', myChecked);
});