jQuery.find() 只返回第一个结果
jQuery.find() only returns first result
对于很多人来说,这似乎是一个很常见的问题,但我无法找到有效的解决方案。
我有一个从调用者接收 DOM 元素的方法。这个 DOM 元素恰好是一个div,我想获取作为div 后代的所有按钮的数组,以便我可以检查它们。
我的第一站是尝试var buttons = jQuery(element).find('button');
但这只返回它找到的第一个按钮。
但是,如果我执行类似var buttons = jQuery('.someClass').find('button');
的操作,我会得到所有匹配按钮的列表。
不幸的是,使用选择器进行搜索不是一种选择,因为我只有一个元素可以使用。
我找到的一个解决方案是:jQuery find(( 只返回第一个匹配的结果?。这个人的问题几乎和我的问题一样,但我无法让解决方案起作用,也不明白为什么jQuery没有做我期望它在这里做的事情。
其他例子在谷歌甚至SO上都存在,但大多数似乎针对选择器的使用,而不是元素。
我对jQuery有什么不了解,它阻止了它以我认为应该的方式工作,我如何才能完成我想要的事情?
附加信息(这实际上可能是一个淘汰赛问题吗?
给你一组具体的HTML来查看有点困难,因为它是通过挖空动态呈现的。也就是说,下面是适用于这种情况的代码片段:
<!-- ko if: Answers.length == 4 -->
<div class="col-xs-12 col-xs-offset-0 col-sm-12 col-sm-offset-0" data-bind="ButtonTextReflowWidth: '120px'">
<!-- ko foreach: Answers -->
<div class="answerswer col-xs-12 col-sm-3" data-bind="css: { selectedAnswer: $parent.SelectedScaleValueID() == ScaleValueID }">
<button tabindex="-1" class="btn" data-bind="click: $parent.SetSelectedScaleValueID, text: Text, enable: ($parent.ParentVM.CurrentQuestion().QuestionID == $parent.QuestionID)" type="button"></button>
</div>
<!-- /ko -->
<!-- ko template: {name: 'editButtonTemplate'} --><!-- /ko -->
</div>
<!-- /ko -->
data-bind="ButtonReflowWidth: '120px'"
是将其div 作为元素传递到需要查找div 内所有按钮的函数中的绑定。
现在我用更新鲜的眼光看待它,我想知道这是否真的是一个淘汰问题,而不是 jQuery 问题。可能是在 DOM 知道模板已呈现之前正在初始化自定义绑定吗?
anwsers
可观察量至少包含 4 个项目,这意味着按钮及其父div.answer
应呈现四次。我希望在进行jQuery查找调用时找到4个按钮。
这确实是一个淘汰问题,而不是jQuery问题。自定义绑定在首次初始化/更新时不一定有权访问完整的 DOM。
解决方案是将绑定的评估推迟到DOM完全加载之后jQuery(()=> {jQuery(element).find('button');});
试试这个。应该工作:
var elems = document.getElementsByTagName( "button" (;var arr = jQuery.makeArray( elems (;
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- Javascript:表单验证getElementById仅返回第一个id元素
- JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 我的设备后退按钮工作不正常,它转到第一个html,但返回到第二个html
- 在ajax html返回中调用ajax会阻止第一个ajax脚本进一步工作
- 在 javascript 中返回正则表达式的每个匹配中捕获的第一个组
- Javascript 多维数组返回第一个值,然后失败
- 当移动到最后一个li时,返回到第一个li(使用Jquery滚动到下一个)
- 为什么定时器setTimeout返回第一个值“;2〃;.代码下方的
- 如果我在一个函数中返回两次,第二个会覆盖第一个吗?
- Ajax:第一个Post很棒,第二个Post返回URL中的数据
- JQuery - select val()只返回下拉列表的第一个值
- Javascript中的全局变量返回到它的第一个值
- 为什么JavaScript结果总是返回第一个值
- 为什么我的 .data() 函数返回 [ 而不是我的数组的第一个值
- 为什么使用& 0"使用三元运算符返回第一个值
- 逗号操作符返回参数列表中的第一个值,而不是第二个值