jQuery найти слова из списка на странице

0

У меня есть огромный список имен (более 10 000), и мне нужно искать экземпляры любого из них (не чувствительные к регистру). Мне нужны эти слова как элементы jQuery, поэтому я могу добавить к ним функциональность. Есть ли эффективный способ сделать это с помощью jQuery?

Дополнительная информация по запросу: в настоящее время у меня есть имена в виде массива строк в моем javascript. Код должен искать имена во всем тексте на странице. Это имена существ, к которым я хочу добавить всплывающую подсказку с помощью Типси.

Если это имеет какое-то значение, это для расширения хром. Вопрос в основном заключается в том, как эффективно найти много разных строк на странице. Я уже нашел множество способов сделать это, если вы ищете только одно слово, хотя итерация над списком слов и выполнение его по отдельности для каждого кажется плохим способом сделать это.

Благодарю!

  • 0
    Какой формат списка? Какими элементами вы хотите их видеть? Ищите их экземпляры где? Какая функциональность будет добавлена? У вас есть какой-либо код или псевдокод, которым вы можете поделиться?
  • 0
    Я добавил немного больше информации в свой вопрос. Хотя я не был уверен в том, какой элемент мне нужен, я думаю, что это не имеет значения, но tipy может добавить всплывающую подсказку ко всему, что я пробовал до сих пор.
Показать ещё 2 комментария
Теги:
google-chrome-extension

1 ответ

1
Лучший ответ

Я не знаю о производительности этого кода для массива из 10 000 значений. Но я нашел здесь этот код: Найти текстовую строку в jQuery и сделать ее полужирным

И я сделал незначительные изменения здесь: http://jsfiddle.net/rsta/fqtaV/2/

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

$.fn.wrapInTag = function (opts) {

    var tag = opts.tag || 'strong',
        words = opts.words || [],
        regex = RegExp(words.join('|'), 'gi') // case insensitive
        ,
        replacement = '<' + tag + ' class="word">$&</' + tag + '>';

    return this.html(function () {
        return $(this).text().replace(regex, replacement);
    });
};

// list
var name_array = new Array('john', 'ringo', 'paul', 'george');

// Usage
$('body').wrapInTag({
    tag: 'span',
    words: name_array
});
  • 0
    Проблема, которую я имею сейчас, состоит в том, что она заменяет имена повсюду в HTML. На некоторых веб-сайтах, которые я тестировал, уже есть ссылки (или что-то еще) для имен, и их идентификатору также присваивается имя, которое я заменяю. Это портит HLTM, поскольку он также пытается обернуть эти идентификаторы в промежутки. Есть ли способ это исправить? Так что он заменяет только имена в реальном тексте?
  • 0
    Привет, вы можете предоставить jsfiddle, который воспроизводит вашу проблему? Я заметил, что оригинальный код брал текст страницы вместо HTML. Это приводит к тому, что весь HTML будет удален кодом. Я исправил это, но не уверен, что отвечу на вопрос, который вы упомянули.

Ещё вопросы

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