2014-02-12 6 views
7

У меня есть AddThis js для закладки данных в календарь. Это работает правильно при загрузке страницы, но я делаю некоторую фильтрацию с использованием загрузки ajax и заменяю html, после чего кнопка AddThis не показывает .Есть мой код для ajax.AddThis не работает после загрузки ajax

$('document').ready(function() { 

    $('.eventSelect').change(function() { 
     var selectedDate = $('#eventDate').val(); 
     var keyword = $('#eventsearch').val(); 
     var url = "/EventsHome?eventDate=" + selectedDate + "&keyword=" + keyword; 
     $.ajax({ 
      type: "GET" 
      , url: url 
      , success: function (data) { 
       console.log($(data).find(".eventList").html()); 
       $(".eventList").html($(data).find(".eventList").html()); 
      var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1'; 
        if (window.addthis) { 
         window.addthis = null; 
         window._adr = null; 
         window._atc = null; 
         window._atd = null; 
         window._ate = null; 
         window._atr = null; 
         window._atw = null; 
        } 
        $.getScript(script); 

      } 
      , error: function (XMLHttpRequest, textStatus, errorThrown) { 

      }, comeplete: 
+0

@jogesh_pi Можете ли вы объяснить? – Arun

+0

'window.addthis = null;', вы хотите удалить Dom? И '$ .getScript (script);', вы возвращаете кнопку в скрипте? –

+3

@ Karthick Kumar Ganesh: вы не должны редактировать исходный код в вопросе, так как это может быть ошибка, отсутствующая у искателя. Я верну это для вас. – GitaarLAB

ответ

1

Вы можете использовать живой метод.

С JQuery 1.4.2 $ ('eventSelect '). Жить (' изменение', функция() {работает с FF, Safari, Opera, но не для IE

3

Вам не нужно сбросить переменные AddThis и перезагрузить скрипт, если вы просто звоните:

addthis.toolbox(); 

это должно вновь сделать кнопки в соответствии с любой конфигурации, которую вы указали Посмотрите на документацию здесь:.

http://support.addthis.com/customer/portal/articles/1293805-using-addthis-asynchronously#.UvvWw0JdWTM

3

После 1 часа пробуждения пользовательских кодов я нашел этот, который отлично работает.

$(document).ajaxStop(function() { 
    if (window.addthis) { 
    window.addthis = null; 
    window._adr = null; 
    window._atc = null; 
    window._atd = null; 
    window._ate = null; 
    window._atr = null; 
    window._atw = null; 
    } 
    return $.getScript("http://s7.addthis.com/js/300/addthis_widget.js#pubid=sdive"); 
}); 

Это source

+1

Удивительный, это все еще работает в июле 2015 года. – nils

1

бы добавили это как комментарий к Sol's answer, но мне не хватает респ. Фактический синтаксис для перезагрузки панели инструментов, чтобы перейти в селекторе класса для инструментов, однако это предполагает, что вы уже init'ed AddThis

addthis.toolbox('.addthis_toolbox') 
1

Для того, чтобы работать с нагрузкой АЯКС и/или нескольких экземпляров AddThis на той же странице, что вам нужно, чтобы вставить элементы внутри DIV:

<div class="addthis_toolbox" data-url="domain.com" data-title="title"> 
    <a class="addthis_button_facebook" style="cursor:pointer"></a> 
    <a class="addthis_button_twitter" style="cursor:pointer"></a> 
    <a class="addthis_button_email" style="cursor:pointer"></a> 
</div> 

, а затем после того, как ваш Аякса делается запустить addthis.toolbox('.addthis_toolbox')

0

Я разрешаю это! Link of Documentation

addthis_share.title = 'title of shared object'; 
 
addthis_share.url = 'URL to share'; 
 
addthis_share.description = 'description of shared'; 
 
addthis_share.swfurl ='URL of a Flash object to share, along with the link'; 
 
addthis_share.width \t ='ideal width of any provided Flash object'; 
 
addthis_share.height ='ideal height of any provide Flash object'; 
 
addthis_share.email_template ='name of template to use for emailed shares '; 
 
addthis_share.email_vars ='associative array mapping custom email variables to values ';
<script type="text/javascript"> 
 
    var addthis_share = addthis_share||{ 
 
      url_transforms : { 
 
       clean: true 
 
      } 
 
     }; 
 
</script> 
 
<script type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4e9c308d658c185a&async=1"></script>

1

Используйте этот скрипт при загрузке нового контента:

if(typeof addthis !== 'undefined') { addthis.layers.refresh(); } 

Это единственное решение для addthis_inline_share_toolbox!

addthis.toolbox() работает только тогда, когда вы указали кнопки внутри элемента addthis (в основном более старые версии).

0

Если вы используете кнопки общего доступа AddThis, возможно, вы заметили, что после инициализации его при загрузке страницы он действительно не работает для контента, загружаемого через ajax после факта.

i.e. AddThis не знает о загруженном содержимом. Исправить это довольно просто. Просто спросите AddThis, чтобы обновить его следующим образом, и он автоматически восстановит правильные ссылки общего доступа для вновь загруженного содержимого.

addthis.layers.refresh();

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