Манипулировать всеми строками в столбце

0

У меня есть набор URL-адресов в столбце таблицы, например:

<tr>
  <td class="impression_referer">http://www.google.fi/search?hl=en&amp;q=http+header+referer&amp;btnG=Google-search&amp;meta=&amp;aq=f&amp;oq=</td>
</tr>
<tr>
  <td class="impression_referer">http://www.facebook.com</td>
</tr>

У меня есть.js файл, где я внизу вызываю все функции для своего приложения, среди прочего, функцию, которая должна манипулировать приведенными выше строками:

$(document).ready(function() {  
  cleanUpUrls();
});

Код, который я должен манипулировать строками, выглядит следующим образом:

var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
var domain = matches && matches[1];

Как написать свой код в функции cleanUpUrls(), чтобы я cleanUpUrls() все упомянутые строки при загрузке страницы?

  • 0
    Вы спрашиваете, как перебрать узлы с помощью токена класса impression_referer ?
  • 0
    Да. И я не уверен, как сделать это наиболее эффективным способом, когда конечным результатом является обновление DOM - какой loop , какой collection , какой метод replace . Я понимаю, что это ежедневная задача для веб-разработчиков, но для меня это не ясно.
Теги:

1 ответ

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

Попробуй это:

$("td.impression_referer").text(function(i, val) {
    var matches = val.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
    return matches ? matches[1] : val;
});

Демо: http://jsfiddle.net/Ht9HC/

Использование $("td.impression_referer") выберет все td-элементы с классом impression_referer. Метод .text() может использоваться для получения или установки текста элемента html. Если вы передадите функцию обратного вызова в .text() ваша функция будет вызываться один раз для каждого элемента, причем существующее текстовое значение передается как параметр, а возвращаемое вами значение будет установлено как новый текст - вам не нужно вручную закодируйте свой собственный цикл, потому что jQuery обрабатывает это для вас за кулисами.

  • 0
    +1 Я не знал, что таким способом можно передать функцию обратного вызова text() . Потрясающие.
  • 1
    @DimitarDimitrov - Практически все методы jQuery, которые получают и устанавливают что-либо, допускают обратный вызов, включая .html() , .prop() , .css() и т. Д.
Показать ещё 1 комментарий

Ещё вопросы

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