我有<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为空!
我做错了什么?
答案 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>
。