Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Настройка подмены контента на странице (https://javascript.ru/forum/jquery/79181-nastrojjka-podmeny-kontenta-na-stranice.html)

Armire 30.12.2019 13:05

Настройка подмены контента на странице
 
Добрый день! Такой вопрос: на сайте нужно настроить подмену почтовых адресов в зависимости от источника посетителя (тем кто приходит с органического поиска - одна почта, тем кто с рекламы - другая, и т.д.).

В интернете нашел простое рабочее решение данной задачи (скрипт sourcebuster). Но, есть один вопрос. Сам я в javascript не разбираюсь вообще. Настраивал все по инструкции (ссылку могу скинуть на нее).

Вопрос в следующем: подмена нужного элемента (в данном случае почтовый адрес на странице) происходит по адресу селектора, что не очень удобно если идентичных элементов на сайте много. Например, вот так выглядит текущий код сейчас:

<script>
if ( sbjs.get.current.src === "direct_search") {

jQuery('#block-append-1 > div > div > div.block-append-text > div.block-append-text-left > div.mail-icon > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');

jQuery('body > div.con-box > div > div.content > div.block-append-1 > div > div.block-append-text > div.block-append-text-left > div.mail-icon > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');
  
jQuery('#block-append-1 > div > div > div.block-append-text > div.block-append-text-left > div.mail-icon').replaceWith('<div class="mail-icon"><a href="mailto:test@test.ru">test@test.ru</a></div>');

jQuery('body > div.con-box > div > div.content > table:nth-child(5) > tbody > tr:nth-child(3) > td:nth-child(2) > p > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');
  
jQuery('body > div.con-box > div > div.content > table:nth-child(27) > tbody > tr > td:nth-child(1) > table > tbody > tr:nth-child(4) > td:nth-child(2) > p > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');
  
jQuery('body > div.con-box > div > div.content > table:nth-child(27) > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2) > p > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');  
  
jQuery('body > div.con-box > div > div.content > ul:nth-child(13) > li:nth-child(2) > span > a  ').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');    
  
jQuery('body > div.con-box > div > div.content > ul:nth-child(26) > li:nth-child(2) > span > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');   
  
jQuery('body > div.con-box > div > div.content > ul:nth-child(38) > li:nth-child(2) > span > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');
  
jQuery('body > div.con-box > div > div.content > ul:nth-child(50) > li:nth-child(2) > span > a').replaceWith('<a href="mailto:test@test.ru">test@test.ru</a>');  
}
</script>


Каждый почтый адрес, который нужно подменять - прописан в данном коде (адрес его селектора). Это не удобно, т.к. если нужно настроить подмену для еще одного адреса, его (адрес его селектора) нужно прописывать в данном коде. Гораздо удобнее бы было настроить подмену, например, через тег div, указав скрипту делать подмену всех элементов, которые обернуты данным тегом. Например, все почтовые адреса на сайте обернуты в тег: div class="podmena"

Как настроить подмену по тегу div, а не адресу селектора? Как должен выглядеть код?


Часовой пояс GMT +3, время: 14:46.