在外部窗口小部件的加载完成时执行JS命令

时间:2014-11-02 16:55:01

标签: javascript jquery widget

在这个问题中,我使用addthis小部件作为示例,但对于任何小部件都是如此(如果可以进行泛化)

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

我尝试在文档就绪上使用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>

1 个答案:

答案 0 :(得分:1)

尝试使用它:

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

addthis.addEventListener('addthis.ready', addthisReady);

有关详细信息,请查看http://support.addthis.com/customer/portal/articles/1365497-addthis-javascript-events

编辑:

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

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

但最好使用widget的内置事件,因为 DOMSubtreeModified 在IE 9(http://help.dottoro.com/ljrmcldi.php)中有错误