2009-06-08 21 views
0

ich diesen <ul>JQuery anhängen() funktioniert nicht

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

Dieser JavaScript-Code haben, die throug ein JSON-Objekt zu gehen gemeint ist, und die Optionen dem UL hinzufügen:

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

}); 

Wenn ich console.log() mache, kann ich sehen, dass das Looping funktioniert. Wenn ich das tue:

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

Es zeigt das HTML aktualisiert wird, wie erwartet. Im Browserfenster wird jedoch die UL als leer angezeigt!

Was mache ich falsch?

Antwort

0

ich den Fehler gefunden wurde ein weiterer Teil des Codes Entleeren des <ul> wenn ich eine bestimmte Schaltfläche geklickt.

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

sollte

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

, die weder –

2

Sie beziehen von ID-Objekt, so dass Sie #

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

funktioniert das auch nicht –

+0

funktioniert, wenn es nicht die Überprüfung nicht versuchen, wenn die Schleife tatsächlich ausgeführt wird? versuchen, Alarm zu setzen ("das funktioniert"); Innerhalb. –

0

vermisste ich input Bedürfnisse vorstellen würde richtig selbst geschlossen sein.

+0

nur, wenn es xhtml, aber auch dann, sollte dies nicht das Javascript beeinflussen. –

1

Ist das ein Tippfehler ?:

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

Sie bedeuten ?:

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

AKTUALISIERT Haben:

Try this:

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

Ich kann nicht wirklich sehen, was falsch ist, aber versuchen Sie stattdessen, nur um zu sehen, ob es funktioniert ...

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

Beide sollten arbeiten.

1

Das Tag Eingabe sollte geschlossen sein - wenn nicht, wenn nicht gültiges HTML in append() im Internet Explorer verwendet wird, wird das div nicht in den DOM-Baum eingefügt, so dass Sie später nicht mit jQuery darauf zugreifen können.

+0

Sie meinen die Tags? –

+0

Ja - Tag – pbrodka