тег div без учета регистра

0

как фильтровать тег 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();
        }
    });
  • 5
    css-tricks.com/snippets/jquery/...
  • 0
    Вместо того, чтобы использовать parent() несколько раз, вы должны попробовать метод has() jQuery
Показать ещё 4 комментария
Теги:

2 ответа

0

ну, 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() много раз...

0

Вы можете записать этот код в свой 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 за эту ссылку).

  • 0
    я использую jQuery> = 1.10.2.
  • 0
    @john Вы можете использовать его тогда :)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню