То, как я делаю jQuery, Содержит нечувствительный к регистру, включая jQuery 1.8 +?

Я пытаюсь использовать, "содержит" нечувствительно к регистру. Я пытался использовать решение в следующем stackoverflow вопросе, но это не работало:

Есть ли нечувствительный к регистру jQuery: содержит селектор?

Для удобства решение копируется здесь:

jQuery.extend(
        jQuery.expr[':'], { 
                Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" 
});

Вот ошибка:

Error: q is not a function
Source File: /js/jquery-1.4.js?ver=1.4
Line: 81

Вот то, где я использую его:

  $('input.preset').keyup(function() {
    $(this).next().find("li").removeClass("bold");
    var theMatch = $(this).val();
    if (theMatch.length > 1){
      theMatch = "li:Contains('" + theMatch + "')";
      $(this).next().find(theMatch).addClass("bold");
    }
  });

Мое использование чувствительного к регистру оригинала "содержит" в тех же работах сценария без любых ошибок. У кого-либо есть какие-либо идеи? Я ценил бы его.

91
задан Community 23 May 2017 в 12:26
поделиться

1 ответ

Можно реализовать калькулятор стека постфиксов . В основном, нужно преобразовать выражение в постфиксную нотацию, а затем просто выполнить итерацию над токенами в постфиксе для вычисления.

-121--2062243-

Для хранения коллекций можно использовать многомерные массивы Variant. Варианты могут хранить данные любого типа, что делает их очень универсальными.

Const Name as Integer = 0
Const Age as Integer = 1
Const moreStuff as Integer = 2

Dim myStructure as Variant
Redim myStructure(0 to 2, 0 to n)

myStructure(Name, 0) = "Blah"
myStructure(Age, 0) = 33
myStructure(moreStuff, 0) = "test"

Примечание: Вы можете расширить только последнее измерение многомерного массива в VBA и сохранить значения, поэтому убедитесь, что оно соответствует измерению, которое вы хотите масштабировать.

Это базовая структура данных, и вы можете разработать класс или функции, чтобы объединить все в соответствии с вашими потребностями.

-121--3879688-

Это то, что я использую в текущем проекте, не было никаких проблем. Посмотрите, если вам больше повезло с этим форматом:

jQuery.expr[':'].Contains = function(a, i, m) { 
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
};

В jQuery 1.8 API для этого изменен, jQuery 1.8 + версия:

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

Вы можете протестировать его здесь . Для получения более подробной информации о селекторах 1.8 + ознакомьтесь с вики Sizzle здесь .

127
ответ дан 24 November 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: