За пределами я объявляю переменную, используя var list;
. Я использую эту переменную внутри цикла for следующим образом:
// add the html to the list
if (list == undefined)
list = item;
else
list.append(item.contents());
item
- это клонированная сборка объекта jquery из вызова $('list_template').clone();
(list_template - это div с элементами <li>
внутри). То, что я делаю, - это создание списка, который я затем добавлю туда, где он мне нужен.
Сейчас этот код работает нормально, но мне он не кажется правильным. К сожалению, я не могу понять, как правильно объявить переменную list
как пустой объект Jquery. Я пробовал оба:
var list = $([]);
var list = $('');
Обе эти причины приводят к тому, что append работает некорректно (или, как и ожидалось), при этом list.html () имеет значение null. Есть ли способ инициализировать мою переменную пустым объектом jquery, поэтому все, что мне нужно сделать, это list.append(item.contents());
без операторов if / else?
Редактировать: Хорошо, чтобы уменьшить путаницу, вот вся функция javascript, которая в настоящее время работает нормально:
var list;
// Loop through all of the objects
var objects = data.objects;
for (x = 0; x < objects.length; x++) {
// Clone the object list item template
var item = $("#object_item_list_template").clone();
// Setup the click action and inner text for the link tag in the template
item.find('a').bind('click', { val: objects[x].Id }, function (e) { ShowObjectDetails(e.data.val); })
.html(objects[x].Name);
// add the html to the list
if (list == undefined)
list = item;
else
list.append(item.contents());
}
// set the list of the topics to the topic list
$("#object_list").empty();
$('<ul>').appendTo("#object_list").append(list.contents());
Шаблон списка объектов выглядит следующим образом:
<div id="object_item_list_template" style="display:none">
<li class="object_item"><a href="#"></a></li>
</div>
Это все работает правильно, клонируя элемент списка, настраивая действие щелчка и добавляя его в список на дисплее.
Я пытаюсь избавиться от оператора if / else. Я не могу просто сделать list.append (), потому что если список не определен (или не является объектом Jquery), он вызывает исключение.