我有一个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
包含搜索文本列表。我必须强调所有这些。
答案 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()来控制所选行上的类。它只会删除或添加您指定的类,而不会触及同一元素上的其他类。因此,如果您还没有为突出显示创建单独的类,只需根据需要打开和关闭它。