在通过ajax动态添加内容后不应用样式

时间:2014-07-30 14:19:44

标签: javascript html css ajax

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

我做了菜单。点击菜单后 - 子菜单被下载。在此之后我改变了CSS来为开放部分及其下载的子菜单应用新样式。但是这个CSS不起作用。如果我在从inspactor窗口添加后复制此动态内容并直接粘贴为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");

只突出显示部分内容:

enter image description here

2 个答案:

答案 0 :(得分:0)

如何从ajax请求添加内容?也许您的ajax内容被读作文本而不被解析为dom,因此不会应用CSS。

答案 1 :(得分:0)

为了识别错误,我们将要求代码。但是,您可以尝试按如下方式添加Ajax成功类。这可以节省您的时间:

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