2016-02-08 67 views
3

我想在指令中實現這個代碼,但在jQLite中這不起作用這應該怎麼做?

var thisCell = element.closest('.sampleclass'); 

回答

3

您必須手動實現這個功能,例如:

var thisCell = (function closest(e, className) { 
    if (e[0].nodeName == "HTML") { 
    return null; 
    } else if (e.hasClass(className)) { 
    return e; 
    } else { 
    return closest(e.parent(), className); 
    } 
})(element, "sampleclass"); 
3

documentation指出:

對於由標籤名稱查找,會轉而 angular.element(文件).find(...)或$ document.find(),或使用 標準DOM API,例如document.querySelectorAll()。

4

還有的.closest在火狐和Chrome的實驗版本,記住,你可以寫的東西顯示在MDN - Element.closest()

有了這個像這樣

var elm = document.querySelector('.myClass').closest(); 

angular.element

var elm = angular.element(document.querySelector('.myClass').closest()); 

當然總是有例外(又名IE),併爲它們你可以使用它在MDN - Element.closest()

if (window.Element && !Element.prototype.closest) { 
    Element.prototype.closest = 
    function(s) { 
     var matches = (this.document || this.ownerDocument).querySelectorAll(s), 
      i, 
      el = this; 
     do { 
      i = matches.length; 
      while (--i >= 0 && matches.item(i) !== el) {}; 
     } while ((i < 0) && (el = el.parentElement)); 
     return el; 
    }; 
} 

也顯示了填充工具我用這個成功獲得最接近的形式通過執行此代碼行(它在Polyfill中工作IE

var form document.querySelector('[name="elmName"]').closest("form");