javascript - jquery ajax加载页面中的js代码如何执行?
伊谢尔伦
伊谢尔伦 2017-04-11 11:16:54
[JavaScript讨论组]

index.js

$(function(){
    $("#btn").on("click",function(){
        $.ajax({
            url: 'page.html',
            type: 'post',
            success: function (responseText) {
                $('#p1').html(responseText);
            }
        });
    });
    $("#test").on("click",function(){
        alert('hello world!');
    });
});

demo.html

<script type="text/javascript" src="index.js"></script>
<input type="button" id="btn" value="加载" />
<p id="p1"></p>

page.html

<input type="button" id="test" value="执行" />

请问:
当demo页面加载page页面后,html代码就会被加载到p1容器里面,之间加载的index.js对于新内容不起作用,点击执行按钮是无效的。

请问如何让加载的页面中javascript代码能够执行?

实践场景:页面依赖第三方表单验证(通过class属性定义验证规则),动态新添加了表单元素,可是新表单元素的验证规则不起作用。


伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(10)
巴扎黑

插入的脚本是不能被执行的~
jquey的html方法使用了原生的innerHTML属性,而对这个属性的赋值时,其中的script标签中的代码将会被无视,不会被解析。
但是加载元素属性上的JS代码是可以被执行的
如:

<input type="button" onclick="javascript:alert('hello world!');" value="执行" />
黄舟

要用jq的live方法。

怪我咯
<script type="text/javascript">
    $(function(){
        function test() {
            alert('hello world!');
        }
    })
</script>
<input type="button" onclick="test();" value="执行" />
迷茫

你加载到p1以后,js的路径有可能变化。看看是不是这个问题,如不是,可以js在ajax页面后动态加载page里的js。

ringa_lee

朋友,你的需求应该是点击某个控件,让一个p 加载一个html页面对吧?那么这个就简单了,jq有个方法,底层就已经实现了ajax ,比如说,我点击一个id是btn的按钮,然后在id为box的p 里边显示一个名字为page.html的网页,在jq你可以这么写

<script>
    $("#btn").click(function(){
        $("#box").load("page.html");
    });
</script>

这样子应该就可以了。

黄舟

我试了下,将type改为get,可以执行的;

巴扎黑

ajax加载的js代码要想执行应该这样写

$(document).on('click','.button',function(){
  test();
})
迷茫

目前的想到的做法是将原来的js分拆,未被执行的js放入ajax的返回结果中:

新增
test.js

$(function(){
    $("#test").on("click",function(){
        alert('hello world!');
    });
});

修改
page.html

<script type="text/javascript" src="test.js"></script>
<input type="button" id="test" value="执行" />

有更优雅的做法么?

PHP中文网
$(function(){
    $("#btn").on("click",function(){
        $.ajax({
            url: 'page.html',
            type: 'post',
            success: function (responseText) {
                $('#p1').html(responseText);
            }
        });
    });
    $("#p1").on("click", "#test", function(){
        alert('hello world!');
    });
});

.on( events [, selector ] [, data ], handler )

黄舟

使用:getScript() 方法 http://www.w3school.com.cn/jq...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号