jQuery选择器和过滤

rge*_*rge 2 jquery filter css-selectors

我刚刚开始使用jQuery,我很兴奋.

我发布的理由是我写了一些jQuery来完成它所需要的任务,但我怀疑它缺乏优雅......

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

HTML:

<tr class="item">
    <td class="sku">[dynamic]</td>
    <td class="quantity">
        <input type="text" name="[dynamic]" maxlength="3" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

jQuery

...
var selections=$(".item>.quantity>:text[value!='']").parent().parent();
...
Run Code Online (Sandbox Code Playgroud)

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

代码气味#1:我在最后使用'.parent().parent()'来抓取整行.有没有什么方法可以说,"给我所有的一些'项目',其中儿童文本输入有一个值",而不是回溯到最后的层次结构?

代码气味#2:我无法想出在选择过程中"修剪"文本输入值的方法,以确保空格不被解释为内容.使用我当前的方法,我将不得不'修剪'并在.each循环期间再次检查,这似乎是多余的.

如果你看到"更好的方式",请告诉我?

谢谢,理查德

Seb*_*Seb 5

#1

改为使用它(注意has选择器):

var selections=$(".item:has(>.quantity>:text[value!=''])");
Run Code Online (Sandbox Code Playgroud)

#2

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