Jquery append()不起作用

时间:2009-06-08 13:04:45

标签: javascript jquery

我有<ul>

<ul id="select_opts" class="bullet-list" style="margin-left:15px;"></ul>

此javascript代码旨在通过JSON对象并添加选项 到UL:

$.each(q.opts, function(i,o)
{                        
    var str='';
    str+="<li id='li_" + i + "'><input type='text' id='opt_" + i + "' value='" + o.option + "'>";
    str+=" (<a href='javascript:delOpt(" + i + ");'>Delete</a>) </li>";
    $("#select_opts").append(str);

});

如果我执行console.log(),我可以看到循环正常。如果我这样做:

console.log($("#select_opts").html());

它显示正在按预期更新的HTML。但是在浏览器窗口中,它显示了 UL为空!

我做错了什么?

7 个答案:

答案 0 :(得分:5)

$("select_opts").append(str);

应该是

$("#select_opts").append(str);

答案 1 :(得分:2)

你是指id的对象所以你错过了#

$.each(q.opts, function(i,o)
{                        
    var str='';
    str+="<li id='li_" + i + "'><input type='text' id='opt_" + i + "' value='" + o.option + "'>";
    str+=" (<a href='javascript:delOpt(" + i + ");'>Delete</a>) </li>";
    $("#select_opts").append(str);
   //  ^
}

答案 2 :(得分:1)

这是一个错字吗?:

$("select_opts").append(str);

你的意思是?:

$("#select_opts").append(str);

<强>更新:

试试这个:

$.each(q.opts, function(i, o) {
    var li = $('<li>').attr('id', 'li_' + i);
    var in = $('<input>').attr('type', 'text').attr('id', 'opt_' + i).val(o.option);
    var aa = $('<a>').attr('href', 'javascript:delOpt(' + i + ');').text('Delete');
    li.append(in).append(aa)
    $("#select_opts").append(li);
});

答案 3 :(得分:1)

我真的看不出什么是错的,但试试这个,只是看它是否有效......

$(str).appendTo("#select_opts");

两者都应该有用。

答案 4 :(得分:1)

标签输入应该关闭 - 如果没有,当在Internet Explorer上的append()中使用无效的html时,div不会被放入DOM树中,因此您以后无法使用jQuery访问它。

答案 5 :(得分:0)

我认为input需要适当地自我封闭。

答案 6 :(得分:0)

我发现了这个错误,当我点击某个按钮时,代码的另一部分正在清空<ul>