我希望我能找到解决方案。在这里:
在我提交表单以向数据库添加消息后,我使用load方法创建<div>
。之后我在回调函数中做了一些事情。
当创建新<div>
的函数完成后,它将返回到应该将消息添加到最后插入的<div>
的调用函数。
这就是问题出现的地方:
我使用选择器查找$(someDiv : last)
,但它将其置于错误的<div>
。所以,我知道它与异步过程有关。
我还没有找到解决这个问题的方法,因为现在我没有使用回调函数。
如果你想看到一个live example源代码以警报的形式混乱了调试代码,你可以看到它在做什么。
答案 0 :(得分:1)
Ajax调用是异步的,您应该使用回调函数来选择加载的数据,例如:
$('div').load(url, data, function(data, status) {
$(someDiv:last).dosomething();
}
答案 1 :(得分:0)
可能新的div没有插入您认为的位置。 $(someDiv:last)返回错误的结果,因为新的div不在someDiv中,或者它不在最后。这似乎是Firebug易于调试的东西。
不是使用“last”元类来选择div,而是更好的想法:给新div一个ID并直接引用它。或者在创建它时给它一个类,使用类来选择它$(“。newdiv”),然后在完成后清除该类。或者只是将新div返回给调用函数,因此根本不需要使用选择器。对不起,我并不完全了解您的情况,但我认为其中至少有一种解决方案可行。
答案 2 :(得分:0)
您是否注意到第一次将值添加到第一个项目,之后它会被添加到之前的最后一个项目中?这可能是一个线索。 哦,我被困在一个循环中,它添加了我的消息10次。看起来你的代码有时间问题。
编辑:将其恢复到基础会看起来像这样:http://kruisit.nl/so/841982/ 希望有所帮助。