Angularjs元素在一个调用中同时查找select和input-这是单个标记查找的极限
Angularjs Element find both select and input in one call - is the limit a single tag lookup?
我有一个指令,希望在其中找到<input/>
和<select>
元素,以便将blur
事件绑定到它们。我知道这可以用ng-blur
来完成,但这个问题实际上是关于angular.element
选择器的。
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);
}
我想问题是为什么第一种方法不起作用?
文件说明:
find()-仅限于按标记名查找从…起https://docs.angularjs.org/api/ng/function/angular.element
但并没有说它仅限于单个标签查找。我做错什么了吗?我是不是遗漏了一些文件?
显然我们这里没有jQuery API,所以我对它不起作用并不感到惊讶。缺少这些文件,这也不足为奇。但是,如果您查看源代码,.find()
只不过是getElementsByTagName的包装器。所以,我们在这里买的东西不多。换句话说,复合选择器不起作用。。。
// jqLite.js#L998
find: function(element, selector) {
if (element.getElementsByTagName) {
return element.getElementsByTagName(selector);
} else {
return [];
}
}
您也可以使用querySelectorAll
。
element[0].querySelectorAll('input, select')
这是一个jsfiddle:
http://jsfiddle.net/36qp9ekL/1196/
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 正在将base64 jpeg从input-type=file上传到服务器
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 使用JS查找数组的平均值
- 查找最短和最长日期
- 猫鼬在特定记录中查找嵌套记录
- 如何使用input-tage上传图片并查看在laravel中上传的文件预览
- 使用javascript在MVC中查找网格长度时出错
- 在Javascript数组中查找绝对最大值
- Angularjs元素在一个调用中同时查找select和input-这是单个标记查找的极限
- 如何使用JavaScript查找INPUT和TEXTAREA Caret位置坐标