css没有应用于使用jQuery创建的html元素.append()

时间:2012-07-13 13:07:47

标签: javascript jquery html css append

所以我知道这可能是一个糟糕的编程习惯,但是我有点紧张,基本上我的代码中都有一个标签,点击屏幕上的按钮,我就可以了。我试图在该div中附加一堆代码。但是,我注意到了两件事。一,我的其他javascript崩溃除非附加的代码全部在一行,两个,即使我已经分配了类,我的css样式表也没有应用于代码。这是相关代码:

            $("#results").append("<ul class='sdt_menu'>");
            for(i=0; i < progression[max].length;i++)
            {
                $("#results").append(
            "<li><a href='#'><img src='images/youAreHere.jpg' alt=''/><span class='sdt_active'></span><span class='sdt_wrap'><span class='sdt_link'>"+progression[max][i]+"</span><span class='sdt_descr'>hover to view description</span></span></a><div class='sdt_box'>"+jobs[progression[max][i]]['description']+"</div></li>");
            }

            $("#results").append("</ul>");

任何帮助揭开神秘面纱的人都会非常感激。

3 个答案:

答案 0 :(得分:4)

当你追加时,你应该附加一整套完整的封闭标签。它不像stringbuilder那样工作。尝试改为:

var tag = '<ul class="sdt_menu">';
for(var i = 0; i < progression[max].length; i++) {
    tag += '...all of your other list items';
tag += "</ul>";

$(tag).appendTo("#results");

答案 1 :(得分:4)

在您当前的代码中,只要您添加<ul>,它就会被浏览器自动关闭(因为在DOM中无法使用未关闭的标记),然后您的<li>被添加到#results也是。或者至少,如果让<li>成为<div>的孩子是合法的,那么他们就是合法的。

相反,您需要将<li>元素附加到<ul>,而不是#results

var $ul = $("<ul class='sdt_menu'>");
for (i = 0; i < progression[max].length; i++) {
    $ul.append(...);
}
$ul.appendTo('#results');

答案 2 :(得分:1)

试试这个:

 var tag = [];
 var ic=0;
 tag[++ic] = '<ul class="sdt_menu">';
 for(var i = 0; i < progression[max].length; i++) {
     tag += '...all of your other list items';
 }
 tag[++ic] = "</ul>";

 $("#results").append(tag.join(''));