2012-04-12 56 views
0

我有一个div,我用jQuery动态替换。CSS样式不适用于替换jQuery的内容

我做这样的事情:

$.get(url, function(result){ 
    $("#myDiv").replaceWith($(result)); 
} 

请求是正确无误且标记加载没有问题,但即使通过Ajax调用(“回归”)返回的内容是完全一样的#myDiv(它包含一个具有相同ID的元素),某些样式未正确应用。

最奇怪的是,使用Chrome浏览器,如果我右键单击具有错误样式的元素并选择“检查元素”,样式将被加载得很好。

这可以在IE8上正常工作。

有什么想法可以在Chrome上造成这种情况?

谢谢

+0

您是否暗示您的样式表按ID查找元素?您可能想尝试通过类指定样式,并确保将该类添加到“结果”中。 – veeTrain 2012-04-12 17:54:02

回答

0

您是否在任何地方使用jQuery函数removeAttr('style')? Chrome或其他Webkit浏览器有时会造成麻烦。 请参阅http://bugs.jquery.com/ticket/9699

+0

不,从js没有任何样式修改 – willvv 2012-04-12 17:56:55

0

Chrome的DOM选择器比IE8更严格。

我建议按类别而不是ID定位元素,即使它对于该元素是唯一的。

+0

尝试过但它具有相同的行为 – willvv 2012-04-12 17:56:38

1

这听起来像重绘没有触发。您可以尝试强制更换后的样式更换如下:

$(some_selector_in_the_result).css('display','block'); 
1

其实我刚刚找到了解决方案。

不正确样式的元素是一个绝对位置的div。

我只设置底部位置,但不是左边(这是0)。

我明确地将CSS中的左边设置为0,现在看起来很好。

由于某种原因,Chrome显然默认位置不同。