hanreev

Vanilla JS .parents()

Jun 1st, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Element.prototype.parents = function (selector) {
  2.     var parent = this.parentElement;
  3.  
  4.     var id = selector.match(/#[^#\.]+/);
  5.  
  6.     if (id instanceof Array) {
  7.         id = id[0].replace('#', '');
  8.  
  9.         while (parent.id != id && parent !== null) {
  10.             parent = parent.parentElement;
  11.         }
  12.  
  13.         return parent;
  14.     }
  15.  
  16.     var name = selector.match(/^[^#\.]+/);
  17.     var classes = selector.match(/\.[^#\.]+/g);
  18.  
  19.     while (parent !== null) {
  20.         if (name instanceof Array && parent.nodeName != name[0].toUpperCase()) {
  21.             parent = parent.parentElement;
  22.             continue;
  23.         }
  24.  
  25.         if (classes instanceof Array) {
  26.             var containClasses = true;
  27.  
  28.             classes.forEach(function (c) {
  29.                 if (!parent.classList.contains(c.replace('.', ''))) containClasses = false;
  30.             });
  31.  
  32.             if (!containClasses) {
  33.                 parent = parent.parentElement;
  34.                 continue;
  35.             }
  36.         }
  37.  
  38.         break;
  39.     }
  40.  
  41.     return parent;
  42. };
Advertisement
Add Comment
Please, Sign In to add comment