Как найти любую строку на странице, используя jQuery - PullRequest
0 голосов
/ 31 октября 2009

Я отчаянно ищу функцию jQuery для анализа каждой строки на странице (может быть в таблице) и замены ее содержимого другой.

Например, я хочу прописать любую строку в строке таблицы.

Не могу найти подсказку о том, как начать, был бы признателен за помощь для начинающих.

Ответы [ 5 ]

1 голос
/ 31 октября 2009

Здесь есть несколько хороших ответов, но помните, что что бы вы ни делали, оно будет несовершенным, потому что любое слово, содержащее разметку, будет отображаться для пользователя как обычное слово, но не будет соответствовать вашему шаблону поиска.

1 голос
/ 31 октября 2009

Кто-то исправит меня, если я ошибаюсь, но с jQuery вам не нужно ничего перебирать, чтобы найти строки таблицы.В этом случае:

CSS

tr.upper{text-transform:uppercase}

jQuery Script

$(document).ready(function(){
    $("tr").addClass("upper");
});
1 голос
/ 31 октября 2009

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

var nodes = $("body")
              .contents()
              .filter(function() {
                  return this.nodeType == Node.TEXT_NODE;
              });
1 голос
/ 31 октября 2009

Далее будут перемещаться по всем элементам на странице, проверяя наличие текстовых узлов. Тогда вы можете что-то с ними сделать.

$(document).contents()
           .filter( function() { return this.nodeType == 3 } )
           .each( function() {
               ...process...
           });

Для ввода любой строки внутри таблицы, я бы использовал

$('table').contents().
          .filter( function() { return this.nodeType == 3 } )
          .each( function() {
              this.innerHTML = this.innerHTML.toUpperCase();
          });
1 голос
/ 31 октября 2009

Я не знаю плагин, который выполняет эту задачу, но, возможно, это может быть полезно.

$("#mytable").replaceTableContents(origText, newText)

(function($){
$.fn.replaceTableContents = function(old, newt)
{
  if($(this).text().indexOf(old)>-1){ //check
    $(this).find("tr").each(function(){

      if($(this).text().indexOf(old)>-1){ //check

         $(this).find("td").each(function(){

            if($(this).text().indexOf(old)>-1){ //check
               $(this).html($(this).html().replace(old, newt));
            } 

         }
      }

    })
  }
}
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...