在 jQuery 的 AJAX 加载后丢失 CSS。

7

大家知道如何解决使用$.load进行Ajax请求后CSS的问题吗?例如,如果我想从一个网页中仅加载一个DIV,在我的Ajax请求之后:

$('container').load('path_to_div #div_id');

我失去了与该div相关的所有css和脚本。
有什么想法吗?

1
你所说的“关联”,是指“在”div内部(在声明内部)还是遇到了样式不再应用和JavaScript事件取消绑定的问题? - FMaz008
1
样式和JavaScript不再应用。 - user765368
1
很可能是因为应用于另一个元素的样式不再与新元素匹配,因此它们被忽略了。 - Barry Chapman
1
你能给我们一个例子,展示ajax调用后的HTML内容以及应该应用的CSS规则吗? - FMaz008
1
@user765368,你解决了这个问题吗?能否分享一下有效的解决方案? - Mrudang Vora
4个回答

2
我曾遇到过这个错误,解决方案是:
``` $('#contentPagina').load(nombrePagina,function(){ $('#contentPagina').trigger('create'); }); ```
注:保留HTML标签

1
我已经寻找了一个小时了。谢谢! - Omar Salem

2
是的,当内容被AJAX替换时,任何已附加的事件处理程序都将断开连接。您可以使用jQuery的.on().live()作为替代事件钩子来防止这种情况发生。
至于CSS,您可能在原始内容上有一个类名或ID,在替换的内容中缺少该类名或ID,或者替换的内容与您在CSS中设置的相同选择器不匹配。
没有看到您的HTML / CSS,无法确定问题所在。

2
将元素(及其子元素)的所有CSS都包含在一个CSS文件中,该文件应该被包含在你要加载它的主页面中。因此,如果你有一个名为main.html的页面,并且你将#div_id div加载到该页面中,则需要在main.html中包含#div_id的CSS。
此外,您还需要包含一个可以委派事件处理程序的脚本,例如.delegate()(适用于jQuery 1.7之前的版本)或.on()(适用于jQuery 1.7+),以便对AJAX加载的内容进行处理。

1

你可以像这个答案中所述动态加载CSS,或将它们添加到你正在加载div的页面的CSS文件中。

至于外部脚本,$.getScript()应该能解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接