帮助jQuery选择器

时间:2011-06-05 20:14:02

标签: jquery jquery-selectors

  

可能重复:
  Check for values in multidimensional input array

我正在使用jQuery选择器在一组输入标记中查找重复的标记,如下所示:

<ul id="class-items">
 <li>
  <input type="hidden" name="tokens[0][Search_Type]" value="a" />
  <input type="hidden" name="tokens[0][Search_Term]" value="123" />
 </li>
 <li>
  <input type="hidden" name="tokens[1][Search_Type]" value="b" />
  <input type="hidden" name="tokens[1][Search_Term]" value="456" />
 </li>
</ul>

这是我的jQuery选择器检查重复的令牌,这似乎不起作用:

if ($('#class-items > li > input[name$="Search_Type"][value="' + searchType + '"] + input[name$="Search_Term"][value="' + searchTerm + '"]').length == 0)

我知道隐藏的令牌正在正确添加,因为我可以通过查看DOM源来看到。

3 个答案:

答案 0 :(得分:2)

您的name属性不会以Search_TypeSearch_Term结尾。

他们最后有],因此选择器应使用Search_Type]Search_Term],如下所示:

     // -------------------------------------v
'#class-items > li > input[name$="Search_Type]"][value="' + 
  searchType + '"] + input[name$="Search_Term]"][value="' + 
  searchTerm + '"]'

答案 1 :(得分:0)

您是否尝试过输入更简单的名称(例如input1 ..)以使其不是导致您出现问题的原因?

答案 2 :(得分:0)

考虑拆分您的选择器,以确保+运算符正确匹配同一级别的元素:

$('#class-items > li').find('input[name$="Search_Type]"][value="' + searchType + '"] +
                             input[name$="Search_Term]"][value="' + searchTerm + '"]')

注意:根据其他人对您问题的评论,您的name$=条款也不正确,因为它们省略了尾随方括号。