javascript / jQuery过滤器的默认选项隐藏所有表行

时间:2016-05-08 19:30:12

标签: javascript jquery html drop-down-menu

请看下面的jsfiddle。

https://jsfiddle.net/51Le6o06/42/

正如您所见,表格过滤器('.filter-gift')使用下面HTML表格中的数据填充自己。我隐藏了所有其他脚本,以便更容易看到。

问题是,当我为“免费电视”选择过滤器时,相应的表格会正确过滤,但如果我在表格中选择默认过滤器选项,过滤器会隐藏所有行。

理想情况下,选择默认选项“-Select-”应该显示所有行,如何更改我的代码,这就是我的功能。

使用jQuery / Javascript:

$(document).ready(function() {
    $('.filter-gift').each(filterItems);
});

function filterItems(e) {
    var items = [];
    var table = '';
    tableId = $(this).parent().parent().attr('tag')

      var listItems = "";
        listItems += "<option value='0'> -Select- </option>";
        $('div[tag="' + tableId + '"] table.internalActivities .information').each(function (i) {
            var itm = $(this)[0].innerText;
            if ($.inArray(itm, items) == -1) {
                items.push($(this)[0].innerText);
                listItems += "<option value='" + i + "'>" + $(this)[0].innerText + "</option>";
            }
        });

    $('div[tag="' + tableId+ '"] .filter-gift').html(listItems);

    $('.filter-gift').change(function () {
        var tableIdC = $(this).parent().parent().attr('tag');

        var text = $('div[tag="' + tableIdC + '"] select option:selected')[0].text.replace(/(\r\n|\n|\r| |)/gm, "");;
            $('div[tag="' + tableIdC + '"] .product-information-row').each(function (i) {
                if ($(this).text().replace(/(\r\n|\n|\r| |)/gm, "") == text) {
                    $(this).show();
                    $(this).prev().show();
                    $(this).next().show();
                }
                else {
                    $(this).hide();
                    $(this).prev().hide();
                    $(this).next().hide();
                }
            });           
        });     
}

1 个答案:

答案 0 :(得分:1)

  

将值设置为999&gt;使用if($(this).val()!= 999)else语句如下

$('.filter-gift').change(function () {
    if($(this).val()!= 999) {
        var tableIdC = $(this).parent().parent().attr('tag');

        var text = $('div[tag="' + tableIdC + '"] select option:selected')[0].text.replace(/(\r\n|\n|\r| |)/gm, "");;
            $('div[tag="' + tableIdC + '"] .product-information-row').each(function (i) {
                if ($(this).text().replace(/(\r\n|\n|\r| |)/gm, "") == text) {
                    $(this).show();
                    $(this).prev().show();
                    $(this).next().show();
                }
                else {
                    $(this).hide();
                    $(this).prev().hide();
                    $(this).next().hide();
                }
            }); 
            } else {
            $(this).parent().parent().find('table tr').show();
            }
        });