【发布时间】:2016-12-23 19:52:52
【问题描述】:
编辑:所以这似乎是选择器的问题? jqLite 是否不支持选择器或它们的某些简化版本?
find('input') 和 find('button') 将返回结果,但如果我尝试使用 ":first" 或其他内容过滤它,则它不会返回任何结果。
我似乎无法让 jqLite 的 find() 返回我的 div 的任何子输入。
我的 ng-show 使用的布尔函数上有一个 $watch。所以当这个 div 变得可见时,我想将焦点应用到 div 元素上,然后找到第一个输入后代并关注它。
指令监视的示例 div 元素:
<div myDirective="function()">
text and stuff
<button>
<another button>
</div>
<div myDirective="function()">
<input>
</div>
这是我的指令中的辅助函数:
function highlightAndFocus(node) {
// focus the div
node.focus();
// get angular's jqlite wrapped element
var task = angular.element(node);
task.addClass('highlight');
// these return empty statements
console.log(task.find('input:first'));
console.log(task.find('button:visible:not("#cancel"):first'));
}
角度文档说它只能通过标签名称找到,但这不是“输入”和“按钮”吗?
https://docs.angularjs.org/api/ng/function/angular.element
这里发生了什么?当似乎应该支持它时,只为这个用例包含 jquery 似乎很愚蠢。我正在打印 var 任务,并且可以在 Web 控制台中看到输入子元素。
【问题讨论】:
标签: javascript jquery html angularjs