Javascript 如何在jQuery.load()之后更新DOM?
我想从模板文件(b.xhtml)加载html内容,将其插入调用文件(a.xhtml),然后更新插入的节点(例如添加/删除属性等) 插入部分工作正常,但DOM似乎没有得到更新 这是测试用例 a.xhtml(调用html文件)Javascript 如何在jQuery.load()之后更新DOM?,javascript,jquery,html,dom,load,Javascript,Jquery,Html,Dom,Load,我想从模板文件(b.xhtml)加载html内容,将其插入调用文件(a.xhtml),然后更新插入的节点(例如添加/删除属性等) 插入部分工作正常,但DOM似乎没有得到更新 这是测试用例 a.xhtml(调用html文件) $(文档).ready(函数(){ $(“按钮”)。单击(函数(){ $(“#占位符”).load(“b.xhtml#id2”); //为什么这样不行? var myTemp=document.querySelector(“#id2”); 如果(myTemp){ 警报(my
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“#占位符”).load(“b.xhtml#id2”);
//为什么这样不行?
var myTemp=document.querySelector(“#id2”);
如果(myTemp){
警报(myTemp.innerHTML);
}否则{
警报(“id2未定义”);
};
});
});
jQuery负载测试
加载模板
b.xhtml(模板html文件)
这是一个模板
这是模板二
$("#placeholder").load("b.xhtml #id2", function(){
var myTemp = document.querySelector("#id2");
if (myTemp) {
alert(myTemp.innerHTML);
} else {
alert("#id2 is undefined");
};
});
或者,使用.done()
试着这样做:
<script>
$(document).ready(function(){
$("button").click(function(){
$("#placeholder").load("b.xhtml #id2",function()
{
var myTemp = document.querySelector("#id2");
if (myTemp) {
alert(myTemp.innerHTML);
} else {
alert("#id2 is undefined");
};
});
});
});
</script>
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“#占位符”).load(“b.xhtml#id2”,函数()
{
var myTemp=document.querySelector(“#id2”);
如果(myTemp){
警报(myTemp.innerHTML);
}否则{
警报(“id2未定义”);
};
});
});
});
使用load()
完成回调,因为它是异步的。在DOM中插入新元素将触发(sic)“回流”,它将在当前脚本停止执行后运行。因此,当您尝试选择元素时,它还不在DOM中。使用如下所述的回调,该回调仅在回流完成后触发。或者在回流后使用延迟到队列javascript,这或多或少也是如此。(如果我没有弄错的话,jquery在后台也会这么做。)谢谢你的回答,但Cruiser比你快了一分钟,还提供了两种解决方案:-(我正在尝试使用.done方法,但是我得到了错误未捕获的TypeError:$(…).load(…).done不是一个函数
-有什么想法吗?我正在使用jQuery 3.1.0。有问题的行是$(“#宋”).load()http://kvrx.org #曲目名称:eq(0)”.done(函数(){track['trackTitle']=song.innerHTML});
-我正在尝试更新一个对象(定义在这行的正上方)的trackTitle属性。
$("#placeholder").load("b.xhtml #id2", function(){
var myTemp = document.querySelector("#id2");
if (myTemp) {
alert(myTemp.innerHTML);
} else {
alert("#id2 is undefined");
};
});
$("#placeholder").load("b.xhtml #id2").done(function(){
var myTemp = document.querySelector("#id2");
if (myTemp) {
alert(myTemp.innerHTML);
} else {
alert("#id2 is undefined");
};
});
<script>
$(document).ready(function(){
$("button").click(function(){
$("#placeholder").load("b.xhtml #id2",function()
{
var myTemp = document.querySelector("#id2");
if (myTemp) {
alert(myTemp.innerHTML);
} else {
alert("#id2 is undefined");
};
});
});
});
</script>