Próbuję znaleźć element w html przez angularjs.
Oto html:
<button class="btn btn-primary multi-files" type="button">
<span>Choose multiple files</span>
</button>
<br/><br/>
<input ng-file-select type="file" multiple style="display: none"/><br/>
Próbuję uzyskać element przycisku na podstawie wielu plików z nazwą klasy, a potem próbowałem
var multibutton = angular.element(element.getElementsByClassName(".multi-files"));
Ale to nie działa i próbowałem, element.find
ale działa tylko dla tagu.
Czy jest jakaś funkcja, która może pobrać element przez id lub nazwę klasy w angularjs?
Odpowiedzi:
getElementsByClassName
jest funkcją w dokumencie DOM. Nie jest to funkcja jQuery ani jqLite.Nie dodawaj kropki przed nazwą klasy podczas jej używania:
Owiń go w jqLite (lub jQuery, jeśli jQuery jest ładowany przed Angular):
Jeśli chcesz wybrać z
element
funkcji link w dyrektywie, musisz uzyskać dostęp do odwołania DOM zamiast odwołania do jqLite -element[0]
zamiastelement
:Alternatywnie możesz skorzystać z
document.querySelector
funkcji (w przypadku wyboru według zajęć potrzebna jest kropka):Demo: http://plnkr.co/edit/AOvO47ebEvrtpXeIzYOH?p=preview
źródło
Nie musisz dodawać
.
ingetElementsByClassName
, tjJednak podczas używania
angular.element
musisz używać selektorów stylu jquery:powinien załatwić sprawę.
Również z tej dokumentacji „Jeśli jQuery jest dostępne, angular.element jest aliasem dla funkcji jQuery. Jeśli jQuery nie jest dostępne, angular.element deleguje do wbudowanego w Angulara podzbioru jQuery, zwanego„ jQuery lite ”lub„ jqLite. „”
źródło
Odpowiedź @ tasseKATT jest świetna, ale jeśli nie chcesz tworzyć dyrektywy, dlaczego nie użyć
$document
?PLUNKR
źródło
angular.element('#Your element id')
wykonuje tę samą pracę.Jeśli chcesz znaleźć przycisk tylko po nazwie klasy i używając tylko jQLite, możesz zrobić to, co poniżej:
Mam nadzieję że to pomoże. :)
źródło