Имя поля не foo
, это foo[]
. Вы можете использовать селектор attributeStartsWith :
$("input[name^='foo']:checked:enabled",'#myform');
В идеале, вы могли бы сделать это:
$("input[name='foo[]']:checked:enabled",'#myform');
Но, как объясняет этот ответ , jQuery использует это для анализа value
части условия attr=value
:
(['"]*)(.*?)\3|)\s*\]
\ 3 - группа, содержащая открывающие кавычки, которые странным образом допускают множественные открывающие кавычки или вообще никаких открывающих кавычек. . *? затем может анализировать любой символ, включая кавычки, пока он не попадет на первый символ «]», заканчивая совпадение. Для специальных символов CSS с обратной косой чертой не предусмотрено, поэтому в jQuery невозможно сопоставить произвольное строковое значение.
Другими словами, как только jQuery набирает первый ]
, он думает, что значение закончилось. Таким образом, вы застряли с StartSith или с использованием чистых элементов DOM, как объясняется в этом ответе.
ВАЖНОЕ РЕДАКТИРОВАНИЕ SUPER DUPER :
Эта ошибка исправлена, по-видимому. Вы должны быть в состоянии использовать код, который я описал как «идеальный», выше.