Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 外部小部件加载完成后执行JS命令_Javascript_Jquery_Widget - Fatal编程技术网

Javascript 外部小部件加载完成后执行JS命令

Javascript 外部小部件加载完成后执行JS命令,javascript,jquery,widget,Javascript,Jquery,Widget,在这个问题中,我以addthis小部件为例,但对于任何小部件都是如此(如果可以推广的话) 是一个将所有社交链接添加到网页的小部件。但是,它的设计定制选项非常有限。因此,为了使它适合我的主题,我需要将addthis生成的a标记转移到我自己的html/css结构中 我尝试在document ready上使用JQuery append方法: $(document).ready(function(){ var addthis = $("#atftbx"); }); 但是,$(“#atftbx”

在这个问题中,我以addthis小部件为例,但对于任何小部件都是如此(如果可以推广的话)

是一个将所有社交链接添加到网页的小部件。但是,它的设计定制选项非常有限。因此,为了使它适合我的主题,我需要将addthis生成的a标记转移到我自己的html/css结构中

我尝试在document ready上使用JQuery append方法:

$(document).ready(function(){
    var addthis = $("#atftbx");
});
但是,$(“#atftbx”)返回的数组为空[],这意味着jquery在页面上找不到该元素。我假设在执行$(document).ready时,小部件还没有加载。是否有任何事件我可以监听然后执行?还有别的办法吗

这并不重要,只是出于参考目的,这里有一个小部件生成内容的示例

<div class="addthis_custom_follow">
    <div id="atftbx" class="at-follow-tbx-element addthis-smartlayers animated at4-show">
     <p><span>    </span></p>
     <div class="addthis_toolbox addthis_default_style addthis_32x32_white_style circular">
         <a class="addthis_button_facebook_follow...">
              <span class="at300bs at15nc at15t_facebook">
                   <span class="at_a11y">Follow on Facebook</span>
             </span><span class="addthis_follow_label">Facebook</span>
         </a>
         <a class="......
         </a>

关注Facebook 脸谱网 尝试使用以下方法:

function addthisReady(evt) {
    // your jQuery code
}

addthis.addEventListener('addthis.ready', addthisReady);
有关更多信息,请查看

编辑:

出于一般目的,我可以假设,当小部件更改小部件容器的HTML时,您可以使用eventdomsubtreemeding执行代码,如下所示:

var isChanged = false;
$(".widget_container").bind("DOMSubtreeModified", function() {
    if (! isChanged) {
        isChanged = true;
        // your code
    }
});

但是最好使用widget的内置事件,因为domsubtreemedited在IE 9中有缺陷()

感谢您提供的信息。内置的小部件不适合我。我检查了调试器,它确实停止了,但是它找不到dom元素。但是你的第二个建议奏效了。我能够看到我正在寻找的dom元素。这肯定回答了我的问题,但我对addthis小部件事件很好奇。