将两个 child() 调用压缩为一个

Posted

技术标签:

【中文标题】将两个 child() 调用压缩为一个【英文标题】:Compressing two children() calls into one 【发布时间】:2011-08-26 04:20:37 【问题描述】:

如何转这个,它使用两个调用两个children

$('#id tr').children('td').children('input')

变成只叫孩子一次的东西?我正在尝试选择特定表格行 (tr) 中的每个输入文本框,它是#id 的子项。我试过了

$('#id tr').children('td input')

$('#id tr').children('td > input')

但这些都不起作用。我对这些选择器表达式有点陌生,如果很明显很抱歉。

【问题讨论】:

【参考方案1】:

虽然我喜欢$("#id tr td input") 的建议,但在某些情况下(例如,如果您有来自其他来源的$("#id tr") 对象)您可能会寻找.find(),它可以深入多个级别(而不是@987654325 @只有一个):

$("#id tr").find("td input")

【讨论】:

检查我的答案,基本上可以让你使用其他来源的选择器。 @kuroir,是的,如果你有选择器而不是对象,你也可以使用$("x", "y") 语法。虽然——这并不重要——我见过的一些测试显示$("x", "y")$("y").find("x") 慢。我觉得它更糟糕,因为它不那么明确。 就像一个魅力。好的是find 深入了多个层次,直到阅读这个答案我才知道,因此我可以将其减少到$('#id').find('input'); 再次感谢,+1 并检查。跨度> 【参考方案2】:

为什么不只是$('#id tr input')

或者$('#id input')

【讨论】:

【参考方案3】:

我很惊讶没有人推荐这个:

$('td input', '#idc tr')

这将允许您从变量中获得#idc tr 部分。基本上你正在做的是连接;所以你先读右边的选择器,然后再读左边的,例如:

$('> input', 'div')

相当于:

$('div > input')

现在,让我们在这里打高尔夫球吧;您传递选择器的方式可以简化为以下两种形式:

$('input', '#idc td')
// vs
$('#id').find('td input')

两者基本相同,但是您可能已经注意到,第二个允许您执行 jquery 链接;使用.end() 回到上一个选择器#id

每当我需要做一些简单的事情而不需要我回到上一个选择器时,我通常会使用第一条语句。

【讨论】:

【参考方案4】:

你可以为你的输入设置一个类并选择它

$('#id tr').children('td:input').hasclass('class name')

【讨论】:

这不仅不起作用,因为td:input 是无效的语法,它也不起作用,因为hasClass(不是hasclass)返回布尔值而不是jQuery 对象。跨度>

以上是关于将两个 child() 调用压缩为一个的主要内容,如果未能解决你的问题,请参考以下文章

从超类调用子类的方法

如何避免在 C++ 中调用祖父构造函数?

ReactJS - Child 的 onClick 事件调用父方法,但范围不是我所期望的

18.从组件外部调用一个方法

使用插槽调用子方法

没有匹配的成员函数调用 child.value