一个例子:
parent
0 child-a
1 child-b
sub-child
2 child-c
sub-child
sub-child
这目前在我的小提琴中有效,只是想知道是否有更清洁的方法来解决它。但是如果单击子项-(a|b|c),则会返回相应的索引(很像 jQuery 的 .index()... 但是如果单击子项的子项,则会得到相同的对应索引。
代码:
$j = jQuery.noConflict();
$j(function() {
// when clicking , show which top level parent element it's in
var element_to_stop_at = $j(".the_top_level_container");
$j(document).click(function(event) {
var target = $j(event.target);
var index_of_top_level_element = 0;
var found_target = false;
var current = target;
while ((current.length > 0) && current.attr("class") != element_to_stop_at.attr("class")) {
current = current.parent();
}
var children = current.children();
current = children.first();
while (current.length > 0 && index_of_top_level_element < children.length) {
if (current.has(target).length > 0 || current[0] == target[0]) {
found_target = true;
break;
}
current = current.next();
index_of_top_level_element += 1;
}
if (false == found_target) {
index_of_top_level_element = -1;
}
console.log("is the " + index_of_top_level_element + " th/nd/rd element in the containing element");
});
});
有没有一种简单/更快的方法来做到这一点?
基本上,我想要 .index() 的功能,但是如果我单击其中一个孩子.the_top_level_container
的孩子,它应该返回相同的索引。
小提琴http://jsfiddle.net/DerNalia/4LSzt/
• 单击框/边框的 3 个部分中的任何一个
• 控制台将给出被the_top_level_container
单击元素所属的子元素 的索引