我正在使用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源来看到。
答案 0 :(得分:2)
您的name
属性不会以Search_Type
和Search_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$=
条款也不正确,因为它们省略了尾随方括号。