Jquery append () не работает - PullRequest
0 голосов
/ 08 июня 2009

У меня есть <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 ]

5 голосов
/ 08 июня 2009
$("select_opts").append(str);

должно быть

$("#select_opts").append(str);
2 голосов
/ 08 июня 2009

вы ссылаетесь на объект по идентификатору, поэтому вы пропустили #

$.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);
   //  ^
}
1 голос
/ 08 июня 2009

Тег Input должен быть закрыт - если нет, то при использовании недопустимого html в append () в Internet Explorer div не помещается в дерево DOM, поэтому вы не сможете получить к нему доступ через jQuery позже.

1 голос
/ 08 июня 2009

Я не могу понять, что не так, но попробуйте вместо этого просто посмотреть, работает ли он ...

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

Оба должны работать.

1 голос
/ 08 июня 2009

Это опечатка?:

$("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);
});
0 голосов
/ 08 июня 2009

Я нашел ошибку, другая часть кода очищала <ul>, когда я нажимал определенную кнопку.

0 голосов
/ 08 июня 2009

Я думаю, что input должен быть правильно самозакрытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...