javascript - 推迟 JavaScript 执行,直到内容添加到文档中

标签 javascript jquery ajax dom jquery-events

我正在尝试使用 Ajax 将一些内容加载到页面中。加载的 html 包含一些 JavaScript 代码。即使代码包装在 $(document).ready 中,它也会在内容插入文档之前执行,因为在加载内容时父文档的 Dom 已准备就绪。

如何推迟代码的执行,直到内容插入到文档中。这是我尝试加载的 html(这是 openid-selector 的代码)

<script type="text/javascript" src="/js/openid-jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    alert('ajax-html');
    openid.init('openid_identifier');
});
</script>
<!-- Simple OpenID Selector -->
<form action="try_auth.php" method="get" id="openid_form">
    <input type="hidden" name="action" value="verify" />

    <fieldset>
            <legend>Sign-in or Create New Account</legend>

            <div id="openid_choice">
                <p>Please click your account provider:</p>
                <div id="openid_btns"></div>
            </div>

            <div id="openid_input_area">
                <input id="openid_identifier" name="openid_identifier" type="text" value="http://www.joycebabu.com" />
                <input id="openid_submit" type="submit" value="Sign-In"/>
            </div>
    </fieldset>
</form>

更新:删除了 noscript 标签

最佳答案

问题似乎在于 openid.init() 正在加载自己的数据,而您希望在同步加载数据后对其进行操作。有几个解决方案:

关联一个回调函数,该函数在异步加载完成时执行。 openid lib 不提供此功能吗?

如果您在将数据元素添加到 DOM 之前知道要操作的数据元素的有效选择器,则可以使用 .live() .

我注意到您正在使用 noscript 标签。我强烈建议不要这样做。通过 JS 完成所有 DOM 操作。

关于javascript - 推迟 JavaScript 执行,直到内容添加到文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896548/

相关文章:

Javascript 原型(prototype)继承 - 真正理解这个概念

javascript - 按钮 onclicked 类已更改,但只有第一次单击有效

javascript - 滚动到不同页面上的元素

javascript - asp.net mvc 使用 Javascript 渲染局部 View

javascript - 如何使用 Javascript 或 CSS 淡出 Django 成功消息?

javascript - 在javascript中的哪里添加异步脚本

javascript - 在 JavaScript 中只有特定的 JSON 属性

javascript - 如何为计算器制作历史功能。在javascript中

javascript - 将值从一个页面的ajax函数传递到另一页面的ajax函数

jquery - 如何在成功或失败时停止 jquery ajax 页面重新加载