2013-09-30 71 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