在jqGrid中搜索单元格值

时间:2014-08-12 05:27:37

标签: jquery jqgrid highlight

我有一个jqGrid我需要整合整个网格的搜索功能。因此搜索文本必须在网格中突出显示(一个或多个)。

我已经在网格中搜索了搜索文本,但不确定如何突出显示文本。

//代码:

  $("#btnSearch").click(function () {

        var str = $("#txtSearch").val();
        if (str) {
            var rows = $("#jQGridDemo > tbody > tr:has(td:contains('" + str + "'))");
            $.each(rows, function (index, value) {

                 //Something like this
               // $(value).toggleClass('ui-state-highlight');

            });
        }
    });

value包含搜索文本列表。我必须强调所有这些。

2 个答案:

答案 0 :(得分:0)

试试这个,

$("#btnSearch").click(function () {
    var str = $("#txtSearch").val();
    if (str) {
        var rows = $("#jQGridDemo > tbody > tr:has(td:contains('" + str + "'))");
        $.each(rows, function (index, value) {
            $(value).html(
                  // highlight your text with class highlight
                  $(value).text().replace(str,'<span class="highlight">'+str+'</span>')
            );
        });
    }
});

答案 1 :(得分:0)

查看jQuery API中的find()函数。它允许您搜索所有内容(包括标签,以便确保选择器在搜索时将您带到td)。

$("#jQueryGrid td").find(searchStr).parent().each(function() {
//add highlighting class to $(this) here
});

如果你在其他td元素中嵌套了tr元素,或者在最基本的表结构中使用了不同的表结构,那么你必须更改你的选择器,但是这样就没有看到html或jQuery用于构建网格。

同样在突出显示时,只需使用addClass()和removeClass()来控制所选行上的类。它只会删除或添加您指定的类,而不会触及同一元素上的其他类。因此,如果您还没有为突出显示创建单独的类,只需根据需要打开和关闭它。