javascript - 强制脚本在 AJAX 加载的页面中运行

标签 javascript jquery ajax

因此,我在 WP 安装中使用 AJAX 加载器,并且我正在加载的页面之一包含一个脚本。

<div id="register-form">
    <div id="register-one"></div>
    <div style="text-align:center;padding-top:10px;"></div> 
    <div class="horizontal-rule"></div>
    <div id='register'>
        <div id="register-character">
        </div>
    </div>

    <div class="post">  
        <form action="" method="post" id="register-form" >
        What's your Name:
            <input class=in id='register_name' name="register_name" onkeydown='register_step1_keydown();' onkeyup='register_step1_keyup();'>
            <input class="next-submit-button" type="submit" id="register-step-one" value="" />
            <input type="hidden" name="submit" />
        </form>  
    </div>
</div>

<script type="text/javascript">

$("#register-step-one").click(function() {
    $.ajax({
      type: "POST",
      success: function() {
        $('#register-form').html("Test");
      }
     });
    return false;
});

</script>

但是问题是,当通过 AJAX 加载页面时,脚本不起作用。然而,如果我刷新页面,脚本就会起作用。显然,该脚本不喜欢从 AJAX 调用运行。

有没有办法让脚本在通过 AJAX 调用加载时工作?我知道我可以将脚本放入主页的页脚或其他位置,但我希望我可以解决这个问题,因为我最终会在主页中得到大量脚本。

最佳答案

首先,您应该将函数包装在 .ready() 中,以确保在对这些元素执行操作之前加载所有 DOM 元素

此外,通过 jQuery 中的 ajax 函数返回的 HTML 中的脚本仅当 HTML 附加到 DOM 中时才会执行。由于您没有附加包含代码的 html,因此返回内容中的脚本将不会运行。

看看.ajax()函数的参数,位于 dataType

dataType:

...

"html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.

...

关于javascript - 强制脚本在 AJAX 加载的页面中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13219495/

相关文章:

javascript - eslint 不处理多个 package.json

javascript - 检查数组是否有 AngularJs 中的特定索引

javascript - 使用 $.getJson 分配变量

javascript - 使用数组方法遍历列表项

javascript - 按特定顺序使用 ajax 响应数据更新列表

Javascript 无法从 PHP 变量获取值?

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - 如何使用 hyperdom-router 更新 url

javascript - 光滑的 jQuery : TypeError Cannot read property 'unslick' of undefined

java - Struts2结果类型="redirectAction"不重定向