Я пытаюсь найти элемент в html с помощью angularjs.
Вот 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/>
Я пытаюсь получить элемент кнопки по нескольким файлам с именем класса, затем я попробовал
var multibutton = angular.element(element.getElementsByClassName(".multi-files"));
Но не работает, и пробовал, element.find
но работает только для тега.
Есть ли какая-либо функция, которая может получить элемент по идентификатору или имени класса в angularjs?
Ответы:
getElementsByClassName
является функцией документа DOM. Это не функция jQuery или jqLite.Не добавляйте точку перед именем класса при его использовании:
Оберните его в jqLite (или jQuery, если jQuery загружается до Angular):
Если вы хотите выбрать из
element
функции ссылки в директиве, вам необходимо получить доступ к ссылке DOM вместо ссылки jqLite -element[0]
вместоelement
:В качестве альтернативы вы можете использовать
document.querySelector
функцию (укажите здесь точку при выборе по классу):Демо: http://plnkr.co/edit/AOvO47ebEvrtpXeIzYOH?p=preview
источник
Вам не нужно добавлять
.
в системуgetElementsByClassName
, т.е.Однако при использовании
angular.element
вам нужно использовать селекторы стиля jquery:должен сделать свое дело.
Кроме того, из этой документации: «Если доступен jQuery, angular.element - это псевдоним для функции jQuery. Если jQuery недоступен, angular.element делегирует встроенное подмножество jQuery Angular, называемое« jQuery lite »или« jqLite ». «»
источник
Ответ @ tasseKATT отличный, но если вы не хотите делать директиву, почему бы не использовать
$document
?PLUNKR
источник
angular.element('#Your element id')
делает ту же работу.Если вы хотите найти кнопку только по имени ее класса и используя только jQLite, вы можете сделать следующее:
Надеюсь это поможет. :)
источник