编辑:那么选择器似乎是一个问题? 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控制台中看到输入的子元素。
答案 0 :(得分:0)
JQlite与jQuery不同。 如果 页面上有jQuery,Angular会使用它,但如果不是,则使用jQlite代替。
The docs明确指出jQlite .find()
仅支持按标记名称查找,但它不能与其他选择器(如:first
)一起使用。
如果您确实需要,可以使用标准DOM API,即Element.querySelectorAll()
。