как фильтровать тег div без чувствительности к регистру?
Я использую код следующим образом.
Следующий код работает правильно, но фильтр чувствителен к регистру! Мне нужно фильтровать без чувствительности к регистру. Как мне это сделать? Понятия не имею
$('#txtSearchInShip').keyup(function () {
var searchText = $(this).val();
if (searchText.length <= 0) {
$('div .thumbnail').fadeIn("slow");
}
else if (searchText.length > 0) {
$("div .thumbnail .caption p a:contains(" + searchText + ")").parent().parent().parent().parent().show();
$("div .thumbnail .caption p a:not(:contains(" + searchText + "))").parent().parent().parent().parent().hide();
}
});
ну, contains
чувствительность к регистру... есть два способа сделать в случае нечувствительности.. oneway - перезаписать функцию, а другие создать новую.
перезаписать jquery: contains. (добавьте это перед кодом).
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
и использовать это в скрипте
$("div .thumbnail .caption p a:contains(" + searchText + ")").parent().parent().parent().parent().show();
это, однако, перезаписывает JQuery contains
.
для создания нового с использованием расширения
$.extend($.expr[":"], {
"containsIN": function(elem, i, match, array) {
return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
теперь вы можете использовать containsIN
вместо contains:
где вам нужно отфильтровать строку с помощью case-insenstive
$("div .thumbnail .caption p a:containsIN(" + searchText + ")").parent().parent().parent().parent().show();
ссылка для получения дополнительной информации о jquery содержит регистр без учета регистра...
кроме того, я рекомендовал вам использовать closest()
или parents()
а не просто parent()
много раз...
Вы можете записать этот код в свой JS файл (для jQuery> = 1,8):
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
Затем вызовите свой метод как обычно:
$("div:contains('John')")
Информация из CSS-трюков (спасибо karthikr за эту ссылку).
parent()
несколько раз, вы должны попробовать методhas()
jQuery