我跟踪了HTMl in 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页面,external.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脚本成功地在div #internal中从external.php加载#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()之后,它无法操作load()的DOM。
请帮帮我。谢谢。
发布于 2014-07-24 15:25:26
在您的代码中:
$('#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调用不一定完成。
发布于 2014-07-24 15:19:51
这是因为.load是异步的。当您在失败的尝试中运行alert时,内容仍然被加载到#internal中--因此您需要像第一个示例一样使用回调函数。
https://stackoverflow.com/questions/24937693
复制相似问题