Я пытаюсь создать динамическое меню с помощью jquery:
function createMenu(array) {
var main = $("#mainUl");
for (var i = 0; i < array.length; i++) {
main.append("<li>");
$('li').append("<a href='#" + myArray[i].id + "'><span>" + myArray[i].id + "</span></a>");
main.append("</li>");
}
}
Меню создано, но в каждом ли я получаю более одного диапазона, есть цикл "внутри" (я думаю...), создающий больше промежутков, чем нужно... как я могу решить/контролировать его, чтобы каждый лич получил один span в соответствии с индексом for-loop?
вы можете сделать это просто как ниже
function createMenu(array) {
var main = $("#mainUl");
for (var i = 0; i < array.length; i++) {
main.append($("<li>").append("<a href='#" + myArray[i].id + "'><span>" + myArray[i].id + "</span></a>"));
}
}
Вы видите это поведение, потому что добавляете этот anchor
с span
при выборе всех элементов li
.
Пытаться,
function createMenu(array) {
var main = $("#mainUl");
for (var i = 0; i < array.length; i++) {
var xLi =("<li>").appendTo(main);
xLi.append("<a href='#" + myArray[i].id + "'><span>" + myArray[i].id + "</span></a>");
main.append(xLi);
}
}
$ ('li') этот селектор получит каждый li на html, поэтому каждый раз, когда вы итерации создаете новый элемент li, вы добавите новый диапазон для всех.
Попробуйте вот так:
function createMenu(array) {
var main = $("#mainUl");
for (var i = 0; i < array.length; i++) {
var menuLine = $('<li>');
menuLine.html("<a href='#" + myArray[i].id + "'><span>" + myArray[i].id + " </span></a>" );
main.append(menuLine);
}
}
menuline
ли вы удалить эту цитату из переменнойmenuline
?