Мне нужно найти индекс элемента среди других элементов, соответствующих данному селектору. Я не могу просто использовать .index() без аргументов, мне нужно игнорировать несколько «чужих» элементов.jQuery .index среди коллекции объектов
$('body').delegate('.TabHeader', 'click', function() {
var $this = $(this),
// All tab headers.
$headers = $this.parent().children('.TabHeader'),
// All tab contents.
$contents = $this.parent().siblings('.TabContent'),
// New active tab position.
// PROBLEM HERE, i would like to do that, but jQuery doesn't handle it:
index = $this.index($headers),
// New active tab header.
$newActiveHeader = $headers.eq(index),
// New active tab content.
$newActiveContent = $contents.eq(index);
// Hidding all other tabs.
$headers.not($newActiveHeader).removeClass('Active');
$contents.not($newActiveContent).removeClass('Active').addClass('Hidden');
// Showing new active tab.
$newActiveHeader.addClass('Active');
$newActiveContent.addClass('Active').removeClass('Hidden');
});
С HTML код такого рода:
<div>
<ul>
<li class="TabHeader Active">Tab 0</li>
<li class="TabHeader">Tab 1</li>
<li class="TabHeader">Tab 2</li>
<!-- There can be foreign elements mixed with <li> elements -->
</ul>
<div class="TabContent Active">
Content 0
</div>
<div class="TabContent Hidden">
Content 1
</div>
<div class="TabContent Hidden">
Content 2
</div>
<!-- There can be foreign elements mixed with <div> elements -->
</div>
(Вкладки генерируются динамически, так что я использую .delegate(), если это имеет значение)
Есть четкий путь получить индекс элемента среди сопоставленного набора элементов, а не только среди детей родителя?
Благодарим за помощь! Я просто вычислил это: 'index = $ headers.index ($ this),' – Virus721