2015-03-10 3 views
0

Я использую jQuery("#content").on('click', 'a', function() {}); , чтобы добавить тег Affiliate Affiliate в мой контент. Мой контент генерируется вызовом ajax.jquery on click does not work on ajax generated content

Щелчок находится на моем скрипте; но ссылка не изменена.

jQuery(document).ready(function() { 
    jQuery("#content").on('click', 'a', function() { 
     addAffiliate(this); 
    }); 

    amazonFRTag = "tag=XXXXXXX-21"; 
    function addAffiliate(link) { 
     if ((link.href).indexOf("amazon.fr") > -1 && (link.href).indexOf(amazonFRTag) < 0){ 
      (link.href) = (link.href).replace("?tag=", "?old-tag="); 
      (link.href) = (link.href).replace("&tag=", "&old-tag="); 
      if ((link.href).indexOf("?") > -1) { 
       link.href = link.href + "&" + amazonFRTag; 
      } 
      else { 
       link.href = link.href + "?" + amazonFRTag; 
      } 
     } 
     return true; 
    } 
}); 

Как я могу заставить его работать?

EDIT:
Barmar прав, его пример работает.
Но другой скрипт (Skimlinks), похоже, впоследствии модифицирует ссылки.
See here
Как я могу избежать процесса этого другого скрипта, когда моя функция успешно сделала append? Спасибо ...

+0

Он не работает только на AJAX-сгенерированных ссылках, он работает с статическими ссылками? – Barmar

+0

Он работает здесь: http://jsfiddle.net/barmar/cp1cw4wt/4/ – Barmar

+0

Привет, Бармар ... Вы полностью правы, ваш пример работает. Другой скрипт (Skimlinks), похоже, впоследствии модифицирует ссылки. См. Здесь: https://jsfiddle.net/cp1cw4wt/5/ Знаете ли вы способ блокировать процесс этого другого скрипта, когда моя функция успешно завершила добавление? Спасибо ... – Nikkel

ответ

0

Skimlinks имеет свой собственный обработчик кликов, который модифицирует ссылку во многом так же, как и вы. Он работает до ваш код, а не после. Вот что он меняет ссылку:

<a href="http://redirect.kadolog.com/?id=75284X1526071&amp;site=kadolog.be&amp;xs=1&amp;isjs=1&amp;url=http%3A%2F%2Fwww.amazon.fr%2Ffoo1&amp;xguid=560420e8d59460f59daf72824e859763&amp;xuuid=3df2f1da98b6a4bda13909d043bb3f0d&amp;xsessid=141dd024a3348df74d7e1743db5f6891&amp;xcreo=0&amp;xed=0&amp;sref=http%3A%2F%2Ffiddle.jshell.net%2Fgkp7dg1f%2Fshow%2F&amp;pref=http%3A%2F%2Fjsfiddle.net%2Fgkp7dg1f%2F&amp;xtz=240" 
    sl-processed="1" 
    data-skimlinks-orig-link="http://www.amazon.fr/foo1">Link1</a> 

Вы можете проверить, установлен ли атрибут data-skimlinks-orig-link, а затем использовать что вместо link.href. Кроме того, исходный URL-адрес находится в параметре url= ссылки на замену, вы можете попробовать изменить эту часть URL-адреса.

Еще один вариант - переписать ссылки, чтобы добавить теги вашего филиала, как только вы загружаете контент с помощью AJAX, а не в обработчик кликов. Часто задаваемые вопросы по Skimlinks не изменяют ссылки, которые уже имеют партнерские теги.