jQuery选择器和筛选

jQuery选择器和筛选,jquery,css-selectors,filter,Jquery,Css Selectors,Filter,我刚刚开始使用jQuery,对此我非常兴奋 我发帖的原因是我写了一些jQuery来完成它所需要的任务,但我怀疑它缺少一点优雅 我正在尝试获取具有以下内容的所有表行: 1) 一类“项目” 2) 具有值的子文本输入框 HTML: 我上面发布的代码是有效的,但有两件事(至少?)闻起来有点滑稽 代码气味#1: 我在末尾使用“.parent().parent()”来获取整行。有没有什么方法可以让我说,“给我所有的tr加上一个‘item’类,其中子文本输入有一个值”,而不是在最后回溯继承权 代码气味#2:

我刚刚开始使用jQuery,对此我非常兴奋

我发帖的原因是我写了一些jQuery来完成它所需要的任务,但我怀疑它缺少一点优雅

我正在尝试获取具有以下内容的所有表行: 1) 一类“项目” 2) 具有值的子文本输入框

HTML: 我上面发布的代码是有效的,但有两件事(至少?)闻起来有点滑稽

代码气味#1: 我在末尾使用“.parent().parent()”来获取整行。有没有什么方法可以让我说,“给我所有的tr加上一个‘item’类,其中子文本输入有一个值”,而不是在最后回溯继承权

代码气味#2: 我想不出在选择过程中如何“修剪”文本输入的值,以确保空格不会被解释为内容。使用我目前的方法,我必须在.each循环中“修剪”并再次检查,这似乎是多余的

如果你有更好的办法,请告诉我

谢谢, 理查德

改为使用此选项(注意
具有
选择器):

#二,


空格通常被认为是有效的输入,因此,如果应用程序特别需要,可以使用
$.trim()

在循环中进行过滤。我不确定您是否有意这样做,但您不必遍历每个子项直到输入。除非你有这样做的理由,否则这同样好:

var rows = $('tr.item:has(input:text[value!=''])');

还请注意,建议您在序言中加入
:text
,并输入
,因为省略它等于
*:text
,这是一个非常慢的选择器。

如何$("tr.item…,以防OP在其他元素上使用item类?嗨,Seb:谢谢你的回复。你的建议效果很好。我只是一直忽略了“:has”过滤器。我目前没有足够的声誉来投票支持答案,但你肯定做到了-再次感谢!Richard@Richard当前位置如果他的回答对你有帮助,请记下单击答案左侧的复选标记即可接受。请记住在“:text”选择器之前添加“input”。:)谢谢您的提示!爱你!太棒了,保罗!谢谢
...
var selections=$(".item>.quantity>:text[value!='']").parent().parent();
...
var selections=$(".item:has(>.quantity>:text[value!=''])");
var rows = $('tr.item:has(input:text[value!=''])');