jQuery禁用与连接条件

时间:2015-09-16 21:58:54

标签: jquery

所以我有这些数据行,我需要禁用复选框,其中第3列包含' B' OR列#4包含负数。我在这里有一个工作代码jsfiddle,但我觉得它多余且效率不高。有人可以帮助更好地做到这一点吗?

$(document).ready(function() {

    $('#row1 tr > td:nth-child(3)').each(function() {

        if ($(this).text() == 'B')
        {
          $(this).closest('tr').find('input:checkbox').attr("disabled",true);
        }

    });

    $('#row1 tr > td:nth-child(4)').each(function() {

        if (parseInt($(this).text()) < 0)
        {
          $(this).closest('tr').find('input:checkbox').attr("disabled",true);
        }
    });
});

1 个答案:

答案 0 :(得分:0)

您可以在#row1 tr。

的单个选择器下组合2个语句

小提琴:http://jsfiddle.net/fRUUd/2728/

<table id="row1">
    <tbody>
        <tr id="tr1">
            <td class="cb"><input type="checkbox" id="cb1">
                </td>
            <td>X</td>
            <td>A</td>
            <td>5</td>
        </tr>    
        <tr id="tr2">
            <td class="cb"><input type="checkbox" id="cb2">
                </td>
            <td>Y</td>
            <td>B</td>
            <td>2</td>
        </tr>    
        <tr id="tr3">
            <td class="cb"><input type="checkbox" id="cb3"> 
                </td>
            <td>Z</td>
            <td> C </td>
            <td>-3</td>  
        </tr>    
    </tbody>
</table>

<br>
<p id="out"></p>

$(document).ready(function () {
    $('#out').text('');
    $('#row1 tr').each(function (i, o) {
        var node;
        if (i == 1) {
            node = $(this).find("td:nth-child(3)");
            if($.trim($(node).text()) == "B")
                $(this).find('input:checkbox').attr("disabled", true);
        }
        else if (i == 2) {
            node = $(this).find("td:nth-child(4)");
            if (parseInt($(node).text()) < 0) {
                $(this).find('input:checkbox').attr("disabled", true);
            }
        }
    });

    //get row values
    $('#out').append($('#row1 tr :checkbox:disabled').length);

});