我正在使用jQuery load()函数从一个div内部加载一些内容。它显示在浏览器上确定,但是当我尝试使用函数find()时,它找不到任何东西,因为它还没有显示在DOM中。我已经尝试打印出div的HTML内容(保存加载内容的那个),就在它们被加载之后,就在我使用find()之前 - 它显示了div之前的那个HTML内容已加载。
所以问题是,如果它不在DOM中,我如何在加载的内容中查找某个id?
也许我可以使用live()和自定义事件解决这个问题?
以下是一些非常简化的代码:
$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view');
console.log($('#srv-1111').html());
生成的源包含#srv-1111元素,它包含html。我虽然没有在控制台中得到任何东西。
答案 0 :(得分:3)
“load”是异步的。您应该将处理放在加载请求的回调函数参数中。只有这样,你才能确定DIV的内在元素是否可用。
是的,如果要处理新元素上的事件,可以使用“live()”。如果您只是想操纵新元素(除了用CSS设置它们之外),例如用其他东西替换一些文本,或者为它们设置动画,你需要等待它们被加载。
答案 1 :(得分:0)
原则上它应该找到你的元素但是你需要验证你的动作的顺序。
你什么时候使用find函数?
使用Chrome开发者工具,因为它会向您显示当前处理的html,而不是已加载的原始文件。
如果需要更多说明,请发布您的代码。 祝你好运!
答案 2 :(得分:0)
您可以使用firebug并调试脚本。加载内容后,搜索id以查看它是否真的存在。
HTH
答案 3 :(得分:0)
我需要操纵$('#srv - '+ maskId)元素,所以我实现的是神奇的 - 至少对我而言:
$('#serverctl-server-dc').live('getId', function(){
$('#srv-'+maskId).parent().css('border','4px solid #AF0200');
});
$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view', function(){
$('#serverctl-server-dc').trigger('getId');
});