Как указано в заголовке. Я использую jQuery для создания магии. Я использовал нестандартный Contains
для селекторов следующим образом:Фильтрация на стороне клиента
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
, который я нашел на межсетях. Он работает нормально. Я использую его в сочетании со следующим:
$("#txtSurname, #txtForename").keyup(function() {
var forenameVal = $("#txtForename").val();
var surnameVal = $("#txtSurname").val();
$("#tblEmployees tr").show();
if (forenameVal.length > 0) { $("#tblEmployees tr td:nth-child(1):not(:Contains('" + forenameVal + "'))").parent().hide(); }
if (surnameVal.length > 0) { $("#tblEmployees tr td:nth-child(2):not(:Contains('" + surnameVal + "'))").parent().hide(); }
});
Однако, это крайне неэффективно и с таблицей 500 строк она борется чрезвычайно. Мои навыки jQuery uber-ninja не так велики, как следующий разработчик, когда дело доходит до написания эффективных селекторов, поэтому мне было интересно, есть ли лучший способ сделать это?
Все еще довольно чертовски медленно, к сожалению, хотя предложение имеет смысл. – Kezzer
Вы пытались вытащить селектор «: not (: Contains» только для того, чтобы увидеть, есть ли там узкое место? –