Span元素未正确更新

时间:2013-09-09 14:00:11

标签: javascript html css google-chrome blink

更新3 - 10/09/2013:刚刚使用Version 29.0.1547.66 m对此进行了测试,问题仍然存在。如果其他人可以测试一下,让我知道结果会很棒。你需要一个内联元素,例如带有一些文本的跨度,让它相对定位,并按照你想要的左右顶部像素移动。然后设置一些jScript来将元素的当前内部html更改为其他内容,您应该看到它在视口中保持不变但在DOM中正确更改。

更新2:经过一些测试后,问题似乎发生在内联元素(例如span)上,或者有CSS使它们内联,但是它们也相对定位,似乎是这种组合造成了这个问题。在Chromium上发布错误后,它被标记为cr-Blink-Rendering问题,该问题看起来是在broswer视口中呈现DOM的引擎。我正在使用Version 29.0.1547.57(当前版本以.66结尾但由于错误而未更新)。因此,如果您使用的是最新版本,则此问题可能不再存在。

更新:在进一步调查中,我认为问题出在最新的Chrome版本29.0.1547.57 m当我在IE9和Firefox 21中以内联方式测试元素时,它工作正常。我已经为此提交了关于铬的错误报告

我遇到了一个问题(我无法使用jsfiddle重新创建),我执行ajax请求,获取一些值并将它们放在我页面中的span元素中。

我有一个非常奇怪的问题,即ajax请求正在运行并将值恢复。这些值通过jQuerys .html'方法插入到span元素中,当我使用Chrome开发人员工具检查DOM时,我可以看到跨度中的新值。

然而,我在页面上看到的并没有反映出这一点,它仍然显示旧值。然而,如果我试图突出显示该值,它会立即更改为正确的值(DOM中显示的值)。

我甚至尝试在ajax调用之前更新spans值(因为我使用的值是从jQuery UI的滑块小部件获得的)但是这仍然会产生相同的结果。

还有其他人遇到过这个吗?

编辑:以下是一些代码

HTML

<div id="NewLoanSliderAmount" class="NewLoanSliderRules"></div>
<span id="NewLoanSliderAmountDisplay" class="NewLoanDisplay">£600</span>

滑块代码。这是我尝试直接从滑块值

更新它的版本
$("#NewLoanSliderAmount").slider({
    value: amount,
    min: 300,
    max: amount,
    step: 100,
    change: function (event, ui) {
        $("#NewLoanSliderAmountDisplay").html("£" + ui.value);
        window.CkSpace.GetLoanValues();
    }
});

这是ajax代码:

    (function (CkSpace, $, undefined) {
        CkSpace.GetLoanValues = function () {
        var url = "/Home/UpdateAPR";

        $.get(url, { Amount: $("#NewLoanSliderAmount").slider("value"), Length:     $("#NewLoanSliderLength").slider("value") }, function (data) {
            $("#NewLoanAmount").html("£"+data.LoanAdvance);
            $("#NewLoanLength").html(data.LoanTerm);
            $("#NewLoanMonthlyCost").html("£"+data.LoanInstalment);
            $("#NewLoanTotal").html(data.LoanGrossRepyable);
            $("#NewLoanAPR").html(data.LoanAPR+"%");
            $("#NewLoanSliderAmountDisplay").html("£" + data.LoanAdvance);
            });
        }

    } (window.CkSpace = window.CkSpace || {}, jQuery));

编辑2:

另一件需要注意的事情是,如果我在填充的跨度上设置了一个断点并逐步执行它,那么每次Chrome开发者工具都会完美更新

1 个答案:

答案 0 :(得分:0)

虽然我不知道为什么会导致这个问题,但我已经弄明白是什么导致了这个问题。

首先,我尝试将范围更改为div并将display:inline添加到css。它仍然无效。

然后我删除了内联显示,突然之间,它作为块级元素工作。

如果有人知道为什么会这样,可以详细说明那么请做!

编辑:在进一步调查中,我认为问题在于最新的Chrome版本Version 29.0.1547.57 m当我在IE9和Firefox 21中以内联方式测试元素时,它工作正常。我认为是时候提交错误报告了!