我有IE7和jQuery Load的回调问题。 所有浏览器都会使IE7正确触发我的Load函数的Callback。只是无法找到解决方案。
$('#cd_vk_cinemascreen').load('/index.php?id=19 #cd_content', function() {
$('#cd_vk_cinemascreen #cd_content').attr('class', 'cm_contentWrapper');
$('#cd_vk_cinemascreen #cd_content').attr('id', 'nothing');
});
感谢您的帮助。
答案 0 :(得分:0)
我最近遇到了这个问题;我相信(但我不确定)这是一种竞争条件。
将jQuery .load
与文档片段(在您的案例中为'/index.php?id=19 #cd_content'
)一起使用时,将使用AJAX获取整个文档。似乎在那时,回调是同时启动,解析了加载AJAX的文档,提取并解析出所需的选择器块,并将ID添加到您自己的文档中
但是当解析出块并将其添加到文档时,回调已经开始运行。当然,回调没有做任何事情,因为当它运行时,它所选择的元素尚未插入。
我的解决方案是避免这个问题:我减少了加载AJAX的文档,这样我就不需要加载片段,从而避免了竞争条件。
答案 1 :(得分:0)
我就是这样做的:
$( cinemascr ).load( '/index.php?id=19 #cd_content', function () {
$( '#cd_content', cinemascr ).
addClass( 'cm_contentWrapper' ).
[0].id = 'nothing';
});
预先缓存cinemascr
- 我认为它是页面上的静态元素。在这种情况下,您可以将其缓存在页面加载上,如下所示:
var cinemascr = $( '#cd_vk_cinemascreen' )[0];
可能是因为IE7不喜欢URL '/index.php?id=19'
的格式......