Динамически добавляемые панели всегда получают индекс как 0

#c# #jquery #razor #model-view-controller

#c# #jquery #razor #модель-представление-контроллер

Вопрос:

Я пытаюсь динамически добавлять панели в существующий привязанный к модели список панелей (панель-группа). Индекс конкретной панели указывает, на какой позиции панель в списке. Однако динамически добавляемые панели в списке всегда имеют индекс добавленной панели как 0.

 for (int i = 0; i < Model.ListofItem.Count; i  )
{
  <div class="panel panel-default">
    <div class="panel-heading">Panel Heading</div>
    <div class="panel-body">@Html.TextBoxFor(model => Model.List[i].item, new { @class = "form-control" })</div>
  </div>
}
  

Предположим, что список содержит 10 панелей, тогда, если я добавлю панель (клонирование и добавление), тогда индекс добавленной панели должен быть 10, но он всегда равен 0. Почему я не могу получить индекс добавленных панелей на стороне клиента? и как мне их получить?

Комментарии:

1. Где код для определения индекса элементов?

2. .index() должен выдавать индекс любой панели. Я добавляю класс с именем ‘Panelx’ к панели, которую я создаю динамически. поэтому в этом случае индекс будет получен как $(‘.Panelx’).index()

Ответ №1:

Если методу .index() не передается аргумент, возвращаемое значение представляет собой целое число, указывающее положение первого элемента в объекте jQuery относительно его родственных элементов.

давайте $('.Panelx').index() немного разберемся

$('.Panelx') вернет список панелей с классом Panelx . .index() вернет положение первого элемента относительно списка. поскольку первый элемент в списке — это просто элемент с индексом 0. Его относительная позиция также будет равна 0, и именно поэтому вы получаете 0 обратно. Работает так, как задумано.

Комментарии:

1. что мне тогда делать, чтобы получить индекс относительно списка? Я имею в виду относительно основного списка, в который я добавляю

2. @user5772245 получите список, перечислите его, пока не найдете нужный элемент и не вернете текущий индекс?