2013-09-30 40 views
0

我有一个表,其中包含项目列表,每个项目旁边的复选框以及用于删除选中项目的按钮。意外的jquery选择器结果

所以我有这样的选择在jQuery的从一个Ajax调用回来删除受影响的项目后删除的选中的复选框的行:

tr input[name=storePurchaseItemIds\\[\\]][value=" + id + "] 

我希望它选择所有“TR”元素它有一个名为storePurchaseItemIds []的输入并且有一个id变量的值。

相反,它似乎做了相反的事情:选择行的一部分的所有输入(当我调用remove()的结果时,它删除了复选框,使行保持不变)。

很明显,我对选择器有些误解,并且很好奇为什么会出现意想不到的结果。

+1

这选择是像CSS给出,说:“选择与这些特殊的属性值,这是一个'tr'的后裔所有'input's ”。 – ajp15243

回答

1

您在此处使用后代选择器,因此它选择输入元素,而您需要选择tr元素,其中input元素与条件匹配。因此,使用:has().has()以下

$("tr:has(input[name=storePurchaseItemIds\\[\\]][value=" + id + "])") 

$("tr").has("input[name=storePurchaseItemIds\\[\\]][value=" + id + "]") 
+0

现在我明白了,我知道这一点。大脑放屁时刻,我猜。 – computrius