带有not()和contains()的jquery多个复选框选择器

时间:2014-02-11 11:28:09

标签: jquery contains

我有多个复选框,我读取并组合成逗号分隔的字符串。 使用该字符串,我想隐藏不包含此逗号分隔字符串的表中的所有内容。 不同的复选框返回不同的值(72.0 x 102.0,64.0 x 90.0,90.0 x 64.0) 我的代码:

$('#kbafilter input[type="checkbox"]').click(function(){
       contain=$('#kbafilter :checked').map(function() {return ':contains("' + this.value + '")';}).get().join(',');
       alert(contain);
       if($(this).is(':checked')){
            $('#orderlist tbody tr:not(' + contain +')').hide();
        }
        else{
            $('#orderlist tbody tr:not(:contains(' + $(this).val() + '))').show();
        }
    });

此代码不起作用,它只显示与选中的第一个复选框匹配的内容,但如果我将IF更改为TRUE

    $('#orderlist tbody tr:not(:contains("72.0 x 102.0"),:contains("64.0 x 90.0"))').hide();    //working

然后我的表只会包含那些包含“72.0 x 102.0”或“64.0 x 90.0”的TR

那可能是错的。有效的包含行是直接从alert()弹出的地方复制的!?!?

祝你好运 尼克拉斯

1 个答案:

答案 0 :(得分:0)

试一试

<强> JSFiddle

$(function () {
    $('#kbafilter input[type="checkbox"]').click(function () {
        $('#orderlist tbody tr').show();
        if ($('#kbafilter :checked').length > 0) {
            contain = $('#kbafilter :checked').map(function () {
                return ':contains("' + this.value + '")';
            }).get().join(',');
            $('#orderlist tbody tr:not(' + contain + ')').hide();
        }
    });
});