我有一个多个“DIV”元素,里面是’p’元素的列表。见下文:
<div class="container"> <p>This is content 1</p> <p>This is content 2</p> <p>This is content 3</p> </div> <div class="container"> <p>This is content 1</p> <p>This is content 2</p> <p>This is content 3</p> </div>
$('.container').children('p').hover(function(){ //get the nth child of p from parent class 'container' });
如何从其父容器类’container’获取元素’p’的第n个子代号?
喜欢,如果你悬停
This is content 1
应将触发输出为1;
谢谢!
解决方法
您可以使用jQuery的
index
function。它告诉你给定元素相对于其兄弟姐妹的位置:
var index = $(this).index();
索引是基于0的,所以如果你正在寻找一个基于1的索引(例如,第一个是1而不是0),只需添加一个索引:
var index = $(this).index() + 1;
如果您没有使用jQuery并且遇到这个问题和答案(OP使用的是jQuery),那么没有这个问题也是很简单的。第n个孩子只考虑元素,所以:
function findChildIndex(node) { var index = 1; // nth-child starts with 1 = first child // (You could argue that you should throw an exception here if the // `node` passed in is not an element [e.g.,is a text node etc.] // or null.) while (node.prevIoUsSibling) { node = node.prevIoUsSibling; if (node && node.nodeType === 1) { // 1 = element ++index; } } return index; }