我想索引文档中的所有内容,然后通过索引调用它。 HTML:
<ul>
<li id="foo">foo</li>
<li id="bar">bar</li>
</ul>
警告获取索引:
alert('Index: ' + $('#foo').index());
问题在于它0
和ul
的警告号码#foo
。我理解这个的逻辑,但我需要它们,所以ul
应该计为0
而#foo
应该是1
。
我可以尝试获得此类索引吗?我尝试prevAll()
,但结果相同。
PS请不要这只是一个例子,实际上代码应该适用于大型文档。
答案 0 :(得分:1)
你可以这样做:
$.fn.tree_index = function() {
var index = -1;
$(this).parents().each(function() {
index += $(this).index() + 1;
});
return index;
}
alert('Index: ' + $('#foo').tree_index());
答案 1 :(得分:1)
index()
将查找其父级内元素的索引。
但你可以用一个参数来称呼它超越它。
假设我们正在处理您的示例
<ul>
<li id="foo">foo</li>
<li id="bar">bar</li>
</ul>
解决方案可能如下所示:
$('ul, li').index($('ul')) // => 0
$('ul, li').index($('#foo')) // => 1
$('ul, li').index($('#bar')) // => 2
您甚至可以以编程方式执行此操作:
$('ul, li').each(function(i) {
console.log(this.tagName + (!!this.id ? " #" + this.id : "") + " = " + i)
})
// UL => 0
// LI#foo => 1
// LI#bar => 2
请注意,$(selector).index(element)
将返回element
匹配的节点中selector
的索引。
希望有所帮助。