jQuery兄弟选择器

时间:2011-01-15 21:08:08

标签: jquery

我有以下内容:

<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的所有输入。

2 个答案:

答案 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);
});

示例:http://jsfiddle.net/petersendidit/NLJQd/