【问题标题】:Safari and Chrome can't handle newly added elementSafari 和 Chrome 无法处理新添加的元素
【发布时间】:2012-12-23 03:17:14
【问题描述】:

我有问题,请帮忙。

我有一个这样的模板:

<div id="dad">
     <div id="son" style="width: 100%">
     some code
     </div>
</div>

然后我有一个通过jQuery动画扩展dad-div的动作

$('#dad').animation({'width': 800px}, 500);

在这一刻,儿子和爸爸都是 800px 宽度,这对我来说很好。

但是当我使用 ajax 从服务器获取新的子元素并替换旧元素时,Safari 和 chrome 上发生了奇怪的事情:

    $.get(url, extraData, function(response) {
        $('#son').hide('slide', null, 500, function(){
            $('#son').replaceWith(response);
            $('#son').show('slide', {direction: 'right'}, 500);
        });
    });

expand dad 脚本仍然有效,但有一些不同之处: 在 IE 和 FireFox 上,爸爸和儿子同时调整了大小,所以效果看起来很流畅 好的。但是在Safari和Chrome上这个过程分为两步,先用动画把dad扩到800px,然后用“跳转”变化让儿子到800px,这个“跳转”让后面的过程出错。

我觉得 IE 和 FireFox 以正确的方式处理了这个问题,有人可以帮我修复 Safari 和 Chrome 吗?

【问题讨论】:

    标签: jquery google-chrome safari


    【解决方案1】:

    jQuery没有replace方法,看来你要使用replaceWith方法。

    $('#son').replaceWith(response);
    

    注意replaceWith用另一个元素替换元素,如果你只想改变一个元素的内容,你可以使用html方法。

    $('#son').html(function(){
       return $(response).html();
    });
    

    【讨论】:

    • 哦,是的,它是“replaceWith”,已修复。我真正想知道的是为什么“儿子” div 没有用“爸爸” div 扩展。
    • @HetfieldJoe 这个跟CSS有关,新追加的元素有style="width: 100%"吗?
    • 是的,我在标签内写了样式只是为了方便。实际上它在其他css文件中定义。新的“儿子”和旧的完全一样,除了里面的文字。
    • @HetfieldJoe 那么为什么不使用html 方法呢?试试第二种方法。
    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多