有没有办法通过属性来获取元素?
问题描述:
我有以下的自定义标签/指令:有没有办法通过属性来获取元素?
<tile class="ng-scope gridster-item" tilevalue="1" gridster-item="tile" row="0" col = "0" ng-repeat="tile in selectedTiles"> </tile>
我想将焦点设置此元素上。有没有办法通过属性名称获取元素,以便我可以设置焦点?
答
使用普通的javavascript,您可以使用.querySelector
和.querySelectorAll
来获取所需的元素,就像在CSS中一样。
var element = document.querySelector('[class="ng-scope gridster-item"]')
var element = document.querySelector('[gridster-item="tile"]')
然后,你可以*地使用任何你想要的element
。
答
如同您为jquery
标记的那样,如果只有一个名为“tile”的元素,您可以使用基于类的元素名称$("tile")
或$(".ng-scope.gridster-item")
。
否则,使用任何属性与$("[attribute_name='attribute_value']")
注意此可以返回对象的阵列。例如,获取元素本身使用$("[attribute_name='attribute_value']")[0]
。
答
使用document.querySelector
或document.querySelectorAll
(无jQuery的需要)
var elements = document.querySelectorAll("[gridster-item]");
或:
var elements = document.querySelectorAll("[gridster-item=tile]");
将焦点设置:
elements[0].focus();
querySelector
返回的第一个元素,querySelectorAll
返回一个数组像NodeList
。
将注意力集中在表单元素上是可以理解的。你有自定义元素,并且它具有中继器,你在这个自定义元素中有什么? – Jai