2009-06-08 68 views
0

我有這個<ul>jQuery的追加()不工作

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

這是爲了去通過量JSON對象,並添加選項 到UL這段JavaScript代碼:

$.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

我發現錯誤,碼的另一部分被排空時<ul>我點擊某個按鈕。

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

應該

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

這並不工作,要麼 – 2009-06-08 13:11:32

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); 
    //^
} 
+0

這並不工作,要麼 – 2009-06-08 13:11:41

+0

如果不嘗試,如果實際執行循環檢查? 嘗試把警報('這個作品');內。 – 2009-06-08 13:18:55

0

我想像input需要正確地自我封閉。

+0

只有當它是xhtml,但即使如此,這應該不會影響JavaScript。 – 2009-06-08 13:23:03

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); 
}); 
1

我實在看不出有什麼不對,但它試一下,只是爲了看看它的工作原理...

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

雙方應該工作。

1

標記輸入應關閉 - 如果不這樣做,用的append()在Internet Explorer無效HTML時,股利不投入DOM樹,所以你不能用jQuery訪問後。