今天做一个表单提交,怎么也拿不到button的选择器,不管用$(“#btn_update”)还会getElementById("btn_update"),浏览器也是谷歌没问题,后来发现是动态加载dom元素无法取值的问题。 因为表单中的表格数据是通过另一个页面传来的id,ajax动态加载的。所以直接取的话,dom元素还没家在成功。
可以用
1.事件委托
$(document).on(‘click‘,‘#btn_update‘,function(){
//..............
});
2.写一个延时器
var initInputDom = function(datas) {
if ($("#wdgl-update-box input[name=description]").length > 0) {
$("#wdgl-update-box input[name=description]").val(
datas[0].description);
$("#wdgl-update-box input[name=id]").val(datas[0].id);
$("#wdgl-update-box input[name=gisLon]").val(datas[0].gisLon);
$("#wdgl-update-box input[name=gisLat]").val(datas[0].gisLat);
$("#wdgl-update-box input[name=name]").val(datas[0].name);
} else {
setTimeout(function() {
initInputDom(datas);
}, 200);
}
}
这个是ajax拿到数据,写进input框中的代码
3.
var $dom = $(‘body‘).find(‘.xxxx‘)
动态加载的dom你不能直接获取的,因为是找不到的,要从已经存在于页面的元素获取那个动态加载的dom元素才行。
4
也是我亲历有效的,function的三种定义方式的第二种,可以解决
一开始我是用function 方法名(){},而后我用 var 方法名 = function(){}。将匿名函数赋值给变量名。也就可以取到了。