无法操作由AJAX load()加载的外部HTML的DOM元素
unable to manipulate DOM elements of external HTML loaded by AJAX load()
我有以下HTMl在index.php
<div id="internal" class="internal-class"></div>
<a href="external.php #external-element" class="button">Load</a>
和这样的CSS
#internal {
padding: 50px;
background: green;
display: inline-block;
}
#external-element {
width: 50px;
height: 50px;
background: yellow;
}
我有一个外部php页面外部。php像这样
<div id="external-element" class="external-class"></div>
我在index.php
中使用了以下脚本$(document).ready(function() {
$('a').click(function(event){
$attrib = $(this).attr('href');
$('#internal').load($attrib,function(){
alert($('#internal').attr('class'));
alert($('.external-element').attr('class'));
});
event.preventDefault();
});
});
在上面的代码中,jQuery脚本成功地从external.php中加载了div #internal
中的#external-element
。加载后,我想提醒类#internal
和#external-element
。
$('#internal').load($attrib,function(){
alert($('#internal').attr('class'));
alert($('.external-element').attr('class'));
});
上面的代码成功地提醒了#internal
&#external-element
。但是当我写
$('#internal').load($attrib);
alert($('#internal').attr('class'));
alert($('#external-element').attr('class'));
则上面的代码没有警告#external-element
类。它说的是undefined
我认为,在AJAX load()
之后,它无法操纵external.php的DOM。
请帮帮我。谢谢。
在你的代码中:
$('#internal').load($attrib,function(){
alert($('#internal').attr('class'));
alert($('.external-element').attr('class'));
});
它是成功的报警,因为异步回调函数内部的load
被调用时,load
完成(即当元素加载)。
当你这样做的时候:
$('#internal').load($attrib);
alert($('#internal').attr('class'));
alert($('#external-element').attr('class'));
当警报被调用时,load
调用不一定已经完成。
这是因为.load
是异步的。当您在失败的尝试中运行alert
时,内容仍然被加载到#internal
中-因此您需要像第一个示例一样使用回调函数。
相关文章:
- 使用javascript在Flash中加载外部图像
- 如何在运行时在angular 2中加载外部js脚本
- Chrome扩展无法通过清单加载外部javascript
- 加载Angular视图后加载外部脚本
- Cordova/Phonegap在主要的Cordova网络视图中加载外部站点
- IE 9 BHO插件.加载外部JS文件时出现错误SCRIPT1014
- 是否有用于加载外部脚本的JavaScript库
- 使用纯Javascript加载外部URL内容
- 在Chrome扩展中加载外部javascript
- 在扩展 jQuery 之前加载外部资源
- 无法加载外部 JavaScript 文件 - Codeigniter
- jquery .load() 不加载外部 JS
- GO - html 文件无法加载外部 js 文件
- jQuery 不会使用 .load() 加载外部 html 模板
- 使用HTML5缓存时无法加载外部资源
- 色盒延迟打开;锁定“;当加载外部javascript文件时
- 使用load()加载外部文件,然后使用fancybox插件进行修改并显示
- 在Ember应用程序中加载外部域脚本
- html javascript加载外部脚本
- 如何防止加载外部资源,同时防止“在'文档'上执行'写入'失败”错误