2011-06-05 118 views
1

可能重复:
Check for values in multidimensional input array帮助jQuery选择

我使用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

细说*复制令牌*。 – 2011-06-05 20:16:44

+0

是不是这样你问这里http://stackoverflow.com/questions/6239925/check-for-values-in-multidimensional-input-array? – Niklas 2011-06-05 20:20:03

+0

@Niklas是的,现在我只是想在这种情况下调试 – babonk 2011-06-05 20:21:07

回答

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 + '"]' 
+2

我按下“发布你的答案”按钮约2秒钟...... darnit :) – 2011-06-05 20:26:02

0

你有没有试过给输入简单的名字(例如input1 ..),使它不是那导致你的问题?

0

考虑分手了你的选择,以确保该+操作者正确地匹配在同级别的元素:

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

注意:每到你的问题,别人的评论也是您name$=而言是不正确的,因为他们忽略尾部方括号。