2014-01-05 4 views
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(), чтобы я обновил все упомянутые строки при загрузке страницы?

+0

Вы спрашиваете, как перебрать _Nodes_ с токеном _class_ 'impression_referer'? –

+0

Да. И я не уверен, как это сделать самым эффективным образом, когда конечным результатом является обновление «DOM» - какой «цикл», какая «коллекция», какой метод «replace» , Я понимаю, что это ежедневная задача для веб-разработчиков, но для меня это непонятно. –

ответ

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() method может использоваться для получения или установки текста элемента html. Если вы передадите функцию обратного вызова на .text(), ваша функция будет вызываться один раз для каждого элемента, при этом существующее текстовое значение передается как параметр, а возвращаемое вами значение будет установлено как новый текст - вам не нужно вручную указывать собственные потому что jQuery обрабатывает это за кулисами.

+0

+1 Я не знал, что вы можете передать функцию обратного вызова в 'text()' this way. Потрясающие. –

+1

@DimitarDimitrov - Практически все методы jQuery, которые получают и устанавливают что-то, позволяют обратный вызов, включая '.html()', '.prop()', '.css()' и т. Д. – nnnnnn

+0

Абсолютно блестящий. (Решение, объяснение, тройная операция.) –

Смежные вопросы