У вашего подхода есть две проблемы.
Во-первых, в ваших html и xml вы не ищете одно и то же:
В вашем html вы находитесь ищет 'div p.active'
, что означает узел <p>
, который имеет атрибут class
(.
), у которого атрибут имеет значение атрибута "active"
, и все это внутри узла <div>
.
В вашем xml, с другой стороны, вы ищете DIV P[active="1"]
. Это означает, что вы ищете узел <P>
, который имеет ([ ]
) атрибут с именем active
, который имеет значение атрибута "1"
, и все это внутри узла <DIV>
.
Хотя оба выглядят одинаково, они определенно не похожи, и использование «активных» в обоих случаях только добавляет путаницы. В html «active» - это значение атрибута, а в xml - это само имя атрибута.
Вторая проблема заключается в том, как формулируются поиски по индексу, то есть массив внутри которого вы хотите проиндексировать свой целевой элемент массива.
Поэтому попробуйте изменить:
var activeElement = $('div p.active');
var activeIndex = activeElement.index('p')
на
var activeElement = $( "div p[class='active']" );
var activeIndex = $( "p[class]" ).index( activeElement )
и
var activeElement = $(this).find('DIV P[active="1"]')
var activeIndex = activeElement.index('P')
в
var activeElement = $( "DIV P[active='1']" );
var activeIndex = $( "P[active]").index( activeElement )
и оба вернутся 1
.
Редактировать:
Я запустил это в браузере следующим образом:
$(document).each(function() {
var activeElement = $( "DIV P[active='1']" );
var activeIndex = $( "P[active]").index( activeElement )
document.write("XML Element " + activeElement.prop("tagName") + " '" + activeElement.text() + "'" + ' has Index ' + activeIndex)
});
Вывод:
XML Element P 'bar' has Index 1