微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Chrome / Webkit内嵌块刷新问题

我发现的问题如下:

情况:我有整体div有内嵌块显示.里面是两个内置块显示的元素.

然后我添加(感谢JavaScript)a< br />两个元素之间.第二个是下一行,这是正常的行为.

越野车部分:< br />然后删除(JavaScript再次)和…显示不更改.看来整个div的框不重新计算.最后我有两个类似的标记,不会出现相同的方式(这有点问题,不是这样).

它在Firefox上工作正常(似乎是基于webkit的,因为Android浏览器的行为方式相同).所以我的问题是,有没有使用将会改变DOM的方法解决方法?使用的库是jQuery.

测试用例here.

编辑:根据duri的建议,我在webkit bugzilla中填写了一个错误报告,这是here.但是我仍在寻找解决方法;

解决方法

方式我发现:从整体DIV中删除所有的孩子,然后追加所有除了BR:
function removeBr(){
    var ahah=document.getElementById("ahah");
    var childs=[],child;
    while(child=ahah.firstChild) {
        if(!child.tagName||child.tagName.toLowerCase()!=='br')
            childs.push(child);
        ahah.removeChild(child);
    }
    for(var i=0;i<childs.length;i++)
        ahah.appendChild(childs[i]);
}

http://jsfiddle.net/4yj7U/4/

其他变体:

function removeBr(){
    var node=$("#ahah")[0];
    node.style.display='inline';
    $("#ahah").children("br").remove(); 
    setTimeout(function(){node.style.display='';},0);
}

原文地址:https://www.jb51.cc/js/152270.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐