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

推迟javascript执行,直到将内容添加到文档中,javascript,jquery,ajax,dom,javascript-events,Javascript,Jquery,Ajax,Dom,Javascript Events,我正在尝试使用Ajax将一些内容加载到页面中。加载的html包含一些javascript代码。即使代码被包装在$(document.ready)中,它也会在内容插入文档之前执行,因为加载内容时父文档的Dom已准备就绪 如何延迟代码的执行,直到内容插入到文档中。这是我试图加载的html(这是代码) $(文档).ready(函数(){ 警报('ajax-html'); init('openid_标识符'); }); 登录或创建新帐户 请单击您的帐户提供商: 更新:删除了noscript标记问题似

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

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


$(文档).ready(函数(){
警报('ajax-html');
init('openid_标识符');
});
登录或创建新帐户
请单击您的帐户提供商:


更新:删除了noscript标记

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

关联异步加载完成时执行的回调函数。openid库是否不提供此功能

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


我注意到您正在使用noscript标记。我强烈反对这种做法。通过JS执行所有DOM操作。

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

关联异步加载完成时执行的回调函数。openid库是否不提供此功能

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


我注意到您正在使用noscript标记。我强烈反对这种做法。通过JS执行所有DOM操作。

有它的用途,但可能不会在使用Ajax插入的文档片段上使用。)openid.init指的是像
#openid_choice
#openid_input_area
这样的元素,它们是加载内容的一部分。我只能修改加载的内容,而不能修改加载内容的脚本。是否可以从加载的内容设置回调?(noscript标签是openid选择器插件的一部分,我将删除它)noscript有它的用途,但在这一点上,它也可能被认为是不推荐的,一切都应该由JS自己处理。noscript也有它的问题:只检测浏览器JS禁用,而不是防火墙禁用或任何其他措施,noscript是块级元素,noscript本质上是在给html添加行为能力,这是邪恶的@乔伊斯,那样的话,live应该做你需要的。您可以有$(“#openid_choice”).live('click',function(){});等等这假设您事先知道元素的名称。回调需要是脚本的一部分。我事先知道元素的名称。无论如何,在我将此标记为已回答之前,我将等待看是否有人有任何其他解决方案。谢谢。
有它的用途,但可能不适用于使用Ajax插入的文档片段;)openid.init指的是像
#openid_choice
#openid_input_area
这样的元素,它们是加载内容的一部分。我只能修改加载的内容,而不能修改加载内容的脚本。是否可以从加载的内容设置回调?(noscript标签是openid选择器插件的一部分,我将删除它)noscript有它的用途,但在这一点上,它也可能被认为是不推荐的,一切都应该由JS自己处理。noscript也有它的问题:只检测浏览器JS禁用,而不是防火墙禁用或任何其他措施,noscript是块级元素,noscript本质上是在给html添加行为能力,这是邪恶的@乔伊斯,那样的话,live应该做你需要的。您可以有$(“#openid_choice”).live('click',function(){});等等这假设您事先知道元素的名称。回调需要是脚本的一部分。我事先知道元素的名称。无论如何,在我将此标记为已回答之前,我将等待看是否有人有任何其他解决方案。谢谢
<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>