jquery ajax加载后丢失css

Posted

技术标签:

【中文标题】jquery ajax加载后丢失css【英文标题】:losing css after jquery ajax load 【发布时间】:2012-03-01 00:06:12 【问题描述】:

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

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

我丢失了与该 div 关联的所有 css 和脚本

有什么建议

【问题讨论】:

通过关联,您的意思是“在” div 的“内部”(在内部声明),或者您遇到了不再应用样式并且未绑定 javascript 事件的问题? 不再应用样式和javascripts 这可能是因为应用于另一个样式的样式在新元素上不再匹配。因此他们被忽视了。 能否给我们举个例子,说明ajax调用后产生的html内容,以及应该应用的css规则。 @user765368 你能解决这个问题吗?您能否分享一下可行的解决方案? 【参考方案1】:

是的,当内容被 AJAX 替换时,附加的任何事件处理程序都将断开连接。您可以使用 jQuery 的 .on().live() 作为替代事件挂钩来防止这种情况发生。

至于 CSS,您可能在原始内容上获得了替换内容中缺少的类名或 ID,或者替换内容与您在 CSS 中设置的选择器不匹配。

没有看到您的 HTML/CSS 就无法分辨。

【讨论】:

【参考方案2】:

将元素(及其子元素)的所有 CSS 包含在一个 CSS 文件中,该文件包含在您将加载它的主页中。因此,如果您有main.html,并且您正在将#div_id div 加载到该页面中,您需要在main.html 中包含#div_id 的CSS。

您还需要包含一个可以将事件处理程序委托给 AJAX 加载的内容的脚本,例如 .delegate()(适用于 1.7 之前的 jQuery 版本)或 .on()(适用于 jQuery 1.7+)。

【讨论】:

【参考方案3】:

我遇到了那个错误,解决方案是:

$('#contentPagina').load(nombrePagina,function() $('#contentPagina').trigger('create'); );

【讨论】:

我已经找了一个小时了。谢谢!【参考方案4】:

您可以像在this answer 中那样动态加载 CSS,或者将它们添加到您要加载 div 的页面的 CSS 文件中。

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

【讨论】:

以上是关于jquery ajax加载后丢失css的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php/jquery 实现持久页面?

单击复选框后,Jquery/ajax/php 将数据加载到文本字段中

使用ajax重新加载后jquery数据表格式消失

在jQuery中使用AJAX加载链接后获取href值

通过 Jquery Ajax 函数加载后不渲染 KnockoutJS 元素

ajax调用后Jquery事件不会触发