Javascript AddThis在ajax加载后不工作

Javascript AddThis在ajax加载后不工作,javascript,jquery,ajax,addthis,Javascript,Jquery,Ajax,Addthis,我有AddThis js用于将细节添加到日历中。这在页面加载时正常工作,但我使用ajax加载进行一些过滤并替换html,之后AddThis按钮不显示。这是我的ajax代码 $('document').ready(function () { $('.eventSelect').change(function () { var selectedDate = $('#eventDate').val(); var keyword = $('#eventsearch

我有AddThis js用于将细节添加到日历中。这在页面加载时正常工作,但我使用ajax加载进行一些过滤并替换html,之后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: 

您可以使用live方法

使用jQuery 1.4.2$('.eventSelect').live('change',function(){与FF、Safari、Opera、,
但对于IE,如果只调用以下命令,则不需要重置AddThis变量并重新加载脚本:

addthis.toolbox();
这将根据您指定的任何配置重新呈现按钮。请查看此处的文档:


在尝试自定义代码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");
});

这是

将其作为注释添加到的,但我缺少代表。重新加载工具箱的实际语法是传入工具箱的类选择器,但是这假设您已经初始化了addthis

 addthis.toolbox('.addthis_toolbox')

加里的回答为我做到了:

然后跑
addthis.toolbox('.addthis\u toolbox')
为我重新初始化addthis


希望这对某人有所帮助!:)

为了在同一页面上使用ajax加载和/或多个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>

然后在ajax完成后运行
addthis.toolbox('.addthis\u toolbox')
我解决了这个问题!

addthis_share.title='共享对象的标题';
addthis_share.url='url to share';
addthis_share.description='description of shared';
添加此_share.swfurl='要共享的Flash对象的URL,以及链接';
添加此_share.width='任意提供的Flash对象的理想宽度';
添加此_share.height='任意闪光物体的理想高度';
添加此_share.email_template='用于电子邮件共享的模板名称';
添加此_share.email_vars='associative array mapping custom email variables to values';

var addthis_share=addthis_share||{
url\u转换:{
干净:是的
}
};

加载新内容时使用此脚本:

if(typeof addthis !== 'undefined') { addthis.layers.refresh(); }
这是添加此内嵌共享工具箱的唯一解决方案


addthis.toolbox()仅在addthis元素(大部分是旧版本)中指定了按钮时才起作用。

如果您使用的是addthis共享,但是,您可能已经注意到,一旦在页面加载时对其进行初始化,它就无法真正用于事后通过ajax加载的内容

i、 e.AddThis不知道fresly-loaded内容。修复方法非常简单。只需让AddThis按以下方式刷新,它就会自动为新加载的内容重新生成正确的共享链接


addthis.layers.refresh();

我意识到我的adblocker负责

if(typeof addthis !== 'undefined') { addthis.layers.refresh(); }
不工作。(未定义addthis.layers.refresh。) 这很奇怪,因为我在4个网站上有完全相同的代码,但只有一个网站不起作用。所以如果你有问题,试着关闭你的adblocker看看是否有任何变化

Alex发布的代码在我打开adblocker(uBlock origin)时对我起了作用。我决定按如下方式运行它,这样我就用“正确”的方式运行它,只有当它不起作用时,才用另一种方式运行

if (typeof addthis !== 'undefined') {
    if (typeof addthis.layers.refresh !== 'undefined' && $.isFunction(addthis.layers.refresh)) {
        addthis.layers.refresh();
    } else {
        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/YOURLINK");
    }
}

@jogesh_pi你能解释一下吗???
window.addthis=null;
,你的意思是删除Dom吗?和
$.getScript(脚本)
,你能拿回脚本中的按钮吗?@Karthick Kumar Ganesh:你不应该在问题中编辑源代码,因为这可能是询问者缺少的bug。我会帮你回复。是的。我从文档中找到了。这应该是批准的评论。这对我来说很有效……我想分享我个人的addthis组件,这样我就可以将它应用到多个页面上了,这就是我最终的结果:
让addscript=document.createElement('script');addscript.type='text/javascript';addscript.setAttribute('src','//s7.addthis.com/js/300/addthis.js#pubid=####);document.body!。appendChild(addscript);window.addthis.toolbox('.addthis_toolbox');