【问题标题】:Does not apply styles after dynamically adding content by ajax通过ajax动态添加内容后不应用样式
【发布时间】:2014-07-30 14:19:44
【问题描述】:

如果您需要代码 - 我会发布它,但似乎问题不在代码中。

我做了菜单。点击菜单后 - 子菜单被下载。在此之后,我将更改 CSS 以为打开部分及其下载的子菜单应用新样式。但是这个 CSS 不起作用。如果我在检查器窗口中添加后复制此动态内容并直接粘贴为 html,并将更改的 CSS 作为菜单的新部分 - 刷新页面后的这个新部分在应用所有样式时都可以正常工作。如果我在动态添加内容后使 javascript 更改 CSS - 新样式不起作用。通过 setAttribute 可以毫无问题地更改他 - 但不起作用(正如我之前所说 - 代码很好,因为在刷新页面后复制粘贴此部分后,所有样式都可以正常工作。我在哪里可以找到错误?

部分代码

 document.getElementById("menu_item_1235").parentNode.setAttribute("class", "adm-sub-submenu-block adm-sub-submenu-open");


 var xmlDoc = http_request.responseXML;
 var nodeLength = xmlDoc.getElementsByTagName("child");
 for (var i = 0; i < nodeLength.length; i++) { 

document.getElementById("menu_item_1235").nextSibling.appendChild(document.importNode(xmlDoc.getElementsByTagName("child")[i].childNodes[0], true));

}

屏幕截图:

i.stack.imgur.com/1Haxs.png i.stack.imgur.com/3zbxX.png

当我采用这种方式时,CSS 也可以部分工作

var string = (new XMLSerializer()).serializeToString(nodeLength[0].childNodes[0]);
document.getElementById("menu_item_1236").nextSibling.innerHTML = string;
document.getElementById("menu_item_1236").parentNode.setAttribute("class", "adm-sub-submenu-block adm-sub-submenu-open");

只有部分部分被突出显示:

【问题讨论】:

  • 你明白了,javascript 在当前可用的元素上设置内联样式,而不是在以后添加的任何未来元素上。
  • "it seems problem is not in code" - 您是否建议您的代码必须是正确的并且问题必须是网络浏览器?祝你好运。
  • 你能再描述一下吗?在我的情况下可以这样做吗?我在添加新内容后应用了新的 CSS 规则 - 不起作用。我在下载新内容之前应用了新的 CSS 规则 - 也没有任何效果。我的风格不是内联风格——我在这部分的风格是在 CSS 部分。 class="old_style" 我更改为 class="new_style"。例如。如果我制作相同的菜单但只有隐藏的子菜单 - 在更改课程后 - 菜单打开。
  • 大卫,我写道 - 如果我在通过 ajax 上传后复制 HTML 的这一部分 - 并将 HTML 粘贴为菜单的新部分 - 一切都适用于新样式

标签: javascript html css ajax


【解决方案1】:

为了识别错误,我们需要代码。但是,您可以尝试在 Ajax 成功上添加类,如下所示。这可能会节省您的时间:

$.ajax({
 url: "/sample.php",
 type: "GET",
 data: "request=somedata",
 success: function(e){
  $(".submenu").html(e);
  $(".submenu").addClass("submenu_class");
 }
});

【讨论】:

  • 我很难处理查询。我写纯javascript来练习
  • @user3802440 那么,你用的是firefox的firebug控制台吗?如果没有,请尝试一下。如果您在 ajax(或其他任何地方)之后出现某种类型的错误,firebug 会在代码运行时向您显示。
  • 没有错误。所有作品,内容已下载,标签均正确。问题只是没有应用新样式。错误窗口中没有错误
【解决方案2】:

如何从 ajax 请求中添加内容?也许您的 ajax-content 被读取为 Text 而没有解析到 dom 中,因此不会应用 CSS。

【讨论】:

猜你喜欢
  • 2011-12-21
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多