Estoy tratando de encontrar el elemento en html por angularjs.
Aquí está el 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/>
Estoy tratando de obtener el elemento del botón por nombre de clase de varios archivos, luego intenté
var multibutton = angular.element(element.getElementsByClassName(".multi-files"));
Pero no funciona, e intenté element.find
pero solo funciona para la etiqueta.
¿Hay alguna función que pueda obtener el elemento por id o classname en angularjs?
Respuestas:
getElementsByClassName
es una función en el documento DOM. No es una función jQuery ni jqLite.No agregue el punto antes del nombre de la clase cuando lo use:
Envuélvalo en jqLite (o jQuery si jQuery se carga antes de Angular):
Si desea seleccionar desde la
element
función de enlace de una directiva, debe acceder a la referencia DOM en lugar de la referencia jqLite, enelement[0]
lugar deelement
:Alternativamente, puede usar la
document.querySelector
función (necesita el período aquí si selecciona por clase):Demostración: http://plnkr.co/edit/AOvO47ebEvrtpXeIzYOH?p=preview
fuente
Usted no tiene que agregar una
.
engetElementsByClassName
, es decir,Sin embargo, cuando se usa
angular.element
, debe usar selectores de estilo jquery:debería hacer el truco.
Además, de esta documentación "Si jQuery está disponible, angular.element es un alias para la función jQuery. Si jQuery no está disponible, angular.element delega en el subconjunto incorporado de AngQ de jQuery, llamado" jQuery lite "o" jqLite. ""
fuente
La respuesta de @ tasseKATT es excelente, pero si no desea hacer una directiva, ¿por qué no usarla
$document
?PLUNKR
fuente
angular.element('#Your element id')
hace el mismo trabajoSi desea encontrar el botón solo por su nombre de clase y usar solo jQLite, puede hacer lo siguiente:
Espero que esto ayude. :)
fuente