gpt4 book ai didi

javascript - Angular jqLit​​e .find() 不会返回任何输入?

转载 作者:行者123 更新时间:2023-11-28 05:11:55 26 4
gpt4 key购买 nike

编辑:所以这似乎是选择器的问题? jqLit​​e 不支持选择器或它们的某些简化版本吗?

find('input') 和 find('button') 将返回结果,但如果我尝试使用“:first”或其他内容过滤它,那么它不会返回任何结果。

<小时/>

我似乎无法让 jqLit​​e 的 find() 返回我的 div 的任何子输入。

我的 ng-show 使用的 bool 函数上有一个 $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'));
}

Angular 文档说它只能通过标签名称查找,但这不是“输入”和“按钮”吗?

https://docs.angularjs.org/api/ng/function/angular.element

这是怎么回事?当看起来应该支持 jquery 时,仅仅为了这一用例而包含 jquery 似乎很愚蠢。我正在打印 var 任务,并且可以在 Web 控制台中看到输入子元素。

最佳答案

JQlite 与 jQuery 不同。 如果 jQuery 在页面上可用,Angular 将使用它,但如果不可用,则使用 jQlite。
The docs明确指出 jQlite 的 .find() 仅支持按标签名称查找,它不能与其他选择器一起使用(如 :first)。

您可以使用标准 DOM API,即 Element.querySelectorAll() ,如果您确实需要的话。

关于javascript - Angular jqLit​​e .find() 不会返回任何输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com