DOM / pure JavaScript solution to jQuery.closest() implementation?

后端 未结 8 1875
感动是毒
感动是毒 2020-12-06 00:26

Here\'s the markup i\'m trying to query. So given the markup:

8条回答
  •  悲&欢浪女
    2020-12-06 00:58

    Alternative is a recursive function. This is slightly different to closest as i searches the children, I'm not sure if closest does.

    function closest(elem) {
        if( elem.className.indexOf("non-unique-identifier") ) {
            return elem;
        } 
    
        var parent = elem.parentNode;
    
        for(var i = 0; i< parent.children.length; i++ ) {
            if( parent.children[i].className.indexOf("non-unique-identifier")!=-1)  {
                return parent.children[i];
            }
        }
    
        return closest(parent);
    }
    
    
    
    var elem = document.getElementById('unique-identifier');
    
    var cl = closest(elem);
    
    console.log(cl);
    

    Non children searching example (more like closest):

    function closest(elem) {
        if( elem.className.indexOf("non-unique-identifier") ) {
            return elem;
        } 
    
        var parent = elem.parentNode;
    
        if( parent.className.indexOf("non-unique-identifier")!=-1) {
            return parent;
        }    
    
        return closest(parent);
    }
    
    
    
    var elem = document.getElementById('unique-identifier');
    
    var cl = closest(elem);
    
    console.log(cl);
    

提交回复
热议问题