如何使用此代码过滤所有网格列?

时间:2013-05-23 12:23:43

标签: javascript jquery asp.net

我在网格视图中使用此代码,但它只是过滤了一个  我的网格视图的列。 我想在此代码中添加其他列,我正在使用它进行循环,但代码无法正常工作。

如何更改此代码以在其他列而非一列中实现过滤?

有一个列过滤代码:

 $(document).ready(function () {
            //
            // Client Side Search (Autocomplete)
            // Get the search Key from the TextBox
            // Iterate through the 1st Column.
            // td:nth-child(1) - Filters only the 1st Column
            // If there is a match show the row [$(this).parent() gives the Row]
            // Else hide the row [$(this).parent() gives the Row]
          { $('#filter').keyup(function (event) {
                var searchKey = $(this).val();

                $("#gvwHuman_ctl00 tr td:nth-child(4)").each(function () {
                    var cellText = $(this).text();
                    if (cellText.indexOf(searchKey) >= 0) {
                        $(this).parent().show();
                    }
                    else {
                        $(this).parent().hide();}

                });

            });

        });

所有列都有代码:

 $(document).ready(function () {
            //
            // Client Side Search (Autocomplete)
            // Get the search Key from the TextBox
            // Iterate through the 1st Column.
            // td:nth-child(1) - Filters only the 1st Column
            // If there is a match show the row [$(this).parent() gives the Row]
            // Else hide the row [$(this).parent() gives the Row]
          { $('#filter').keyup(function (event) {
                var searchKey = $(this).val();
              for(i=0;i<5;++i)
               {    $("#gvwHuman_ctl00 tr td:nth-child(i)").each(function () {
                    var cellText = $(this).text();
                    if (cellText.indexOf(searchKey) >= 0) {
                        $(this).parent().show();
                    }
                    else {
                        $(this).parent().hide();}

                });

            });   }

        });

1 个答案:

答案 0 :(得分:1)

替换它:

for(i=0; i<5; ++i) {
     $("#gvwHuman_ctl00 tr td:nth-child(i)").each(function () {

有了这个:

for(i=1; i<6; ++i) {
     $("#gvwHuman_ctl00 tr td:nth-child(" + i + ")").each(function () {

i实际上是一个javascript变量,但它在代码中被解释为一个字符串。此外,:nth-child() Selector以1开头,因此我们也需要修改for循环。