2016-04-08 4 views
2

Onlara bir blur olayını bağlamak için <input/> ve <select> öğelerini bulmak istediğim bir yönergem var. Biliyorum ki bu ng-blur ile yapılabilir ama bu soru gerçekten angular.element seçiciyle ilgili.Angularjs Öğesi, tek bir aramda hem seçip hem de girdi buluyor - tek bir etiket aramasının sınırı mı?

link: function(scope, elem, attrs){ 

    elem.find('input, select').bind('blur', someFunction); // doesn't work as input, select returns length 0 

    // this works when separated 
    elem.find('input').bind('blur', someFunction); 
    elem.find('select').bind('blur', someFunction); 

} 

Sanırım soru neden ilk yol çalışmıyor?

documentation devletler:

bulmak() - https://docs.angularjs.org/api/ng/function/angular.element

ancak gelen etiket adını tarafından rehberin sınırlıdır o tek etiket aramalarının sınırlı olması demek değildir. Yanlış bir şey mi yapıyorum? Bir yerlerde bazı belgeleri özledim mi?

+1

bir ebeveyn çocuk ilişkisini gösterir, bu yüzden hayır, ben niye şeyler temizler O – SoluableNonagon

cevap

2

Açıkçası burada jQuery API'sine sahip değiliz, bu yüzden 'un çalışmasına şaşırmadım. Dokümanlar eksik - ya da orada da sürpriz yok. Ancak, source'a bakarsanız, .find(), getElementsByTagName civarında bir sarıcıdan başka bir şey değildir. Yani - kendimizi burada fazla satın almayız. Diğer bir deyişle, bileşik seçici Ayrıca querySelectorAll kullanabilirsiniz

// jqLite.js#L998 
find: function(element, selector) { 
    if (element.getElementsByTagName) { 
     return element.getElementsByTagName(selector); 
    } else { 
     return []; 
    } 
} 
+0

olduğunu denemedim. Keşke bunu açıklayan doktorlar olsaydı. – SoluableNonagon

İlgili konular