#javascript #jquery
#javascript #jquery
Вопрос:
<div class="parent">
<div class="formRow js-TextBox"><a></div> <------ index 0
<div class="formRow js-Image"><a></div> <------ index 1
<div class="formRow js-TextBox"><a></div><------ index 2
<div class="formRow js-ImageList"><------ index 3
<div class="formRow js-Image"><a></div> <-- **This should return 3 but is returning 4 because I search index on the basis of formRow**
</div>
Код для поиска formRow
индекса
var parent = $(this).parents("div.formRow");
var rowIndex = parent.parent().find("div.formRow").index(parent);
Пожалуйста, обратитесь к приведенному выше коду и посоветуйте, как я могу найти индекс, formRow
для которого я нажал на элемент привязки a
.
Проблема в том, что последняя строка формы содержит другую formRow
, но мне нужен индекс родительской строки формы.
Комментарии:
1. информация не полная??
this
относится здесь к какому элементу??2. @diEcho — Я думаю, что это выбранный элемент — тег
3. «this» — это тег привязки, на который был нажат
4. Вы бы просто позвонили
$(this).parent().index()
. Но вы не сможете получить 3 для последней строки, если не выполните дальнейшую проверку в DOM-дереве, чтобы увидеть, есть ли другойformrow
родитель5. Возможно, было бы лучше вместо этого привязать обработчик события click к разделам…. что вы делаете в обработчике событий? Какова цель ссылок?
Ответ №1:
Я бы устранил двусмысленность и предоставил элементу номер строки во время рендеринга, т.Е.
<div class="formRow js-TextBox" id="row<%= rownumber %>"><a></div>
Или в качестве идентификатора привязки:
<div class="formRow js-TextBox"><a id="row<%= rownumber %>"></div>
Существует множество способов подойти к этому. Я всегда нахожу, что если что-то кажется сложным, то я подхожу к этому с неправильного направления (или просто неправильно).
Ответ №2:
Можете ли вы изменить вышесказанное — я бы добавил другой css-класс — primaryRow к первым трем и использовал его вместо formRow в выражении jQuery
ХОРОШО — запускаем этот код:
$('.parent > div').addClass('primaryRow');
чтобы добавить класс.
Затем
var rowIndex = $('.primaryRow').index($(this).parents().find('.primaryRow'));
Комментарии:
1. строка «<div class=»formRow js-Image»><a></div>» создается динамически внутри строки с индексом 3, поэтому родительская строка может быть дочерней для другой строки
Ответ №3:
Это работает.
$('a').click(function(){
var i = $(this).parents('.parent > .formRow').index('.parent > .formRow');
alert(i);
return false;
});
Проверьте это: jsfiddle