get the nth-child number of an element in jquery

前端 未结 3 1935
天命终不由人
天命终不由人 2021-02-03 20:23

I have a class of multiple \'DIV\' elements and inside it are list of \'p\' elements. See below:

This is content 1&l

相关标签:
3条回答
  • 2021-02-03 21:04

    Use the parameter-less version of the .index() method to find the position of the element relative to its siblings:

    $('.container').children('p').hover(function() {
         var index = $(this).index() + 1;
    });
    

    Note that the result of .index() will be zero-based, not one-based, hence the + 1

    0 讨论(0)
  • 2021-02-03 21:14
    $('.container').children('p').hover(function(){
        //get the nth child of p from parent class 'container'
        var n = 1;
        var child = $(this).parent().find("p:eq("+n+")");
    });
    

    Should work!

    Or if you want to know the index of the hovered element:

    $('.container').children('p').each(function(index,element) {
        // use closure to retain index
        $(element).hover(function(index){
            return function() { alert(index); }
        }(index);
    }
    

    See http://api.jquery.com/each/

    0 讨论(0)
  • 2021-02-03 21:19

    You can use jQuery's index function for that. It tells you where the given element is relative to its siblings:

    var index = $(this).index();
    

    Live example | source

    The indexes are 0-based, so if you're looking for a 1-based index (e.g., where the first one is 1 rather than 0), just add one to it:

    var index = $(this).index() + 1;
    

    If you're not using jQuery and came across this question and answer (the OP was using jQuery), this is also quite simple to do without it. nth-child only considers elements, so:

    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;
    }
    
    0 讨论(0)
提交回复
热议问题