IE7中的jQuery加载回调

时间:2011-10-07 12:42:23

标签: jquery internet-explorer-7 callback load

我有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');
});

感谢您的帮助。

2 个答案:

答案 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'的格式......