селектор jQuery для входов с квадратными скобками в атрибуте name

Я пытаюсь выбрать этот элемент, который имеет квадратные скобки в имени атрибута:

<input type="text" name="inputName[]" value="someValue">

Я пробовал это (что не работает):

$('input[inputName[]=someValue]')

и так:

$('input[inputName[]=someValue]')

или такой:

$('input["inputName[]"=someValue]')

EDIT: как некоторые из вас отметили,$('input[inputName=someValue]') никогда не будет работать. Я пытался сделать вот что:--5-->. (Но с [] в атрибуте name).

4 ответов


на документация jQuery, попробуйте это:

$('input[inputName\[\]=someValue]')

[редактирование] Однако, я не уверен, что это правильный синтаксис селектора. Вы, наверное, хотите:

$('input[name="inputName[]"][value="someValue"]')

вы можете использовать обратную косую черту, чтобы процитировать "забавные" символы в селекторах jQuery:

$('#input\[23\]')

для значений атрибутов можно использовать кавычки:

$('input[name="weirdName[23]"]')

теперь я немного смущен вашим примером; как именно выглядит ваш HTML? Где, в частности, отображается строка "inputName"?

редактировать исправлена bogosity; спасибо @Dancrumb


синтаксис селектора атрибутов [name=value] здесь name - имя атрибута и value значение атрибута.

Итак, если вы хотите выбрать все input элементы с атрибутом name стоимостью inputName[]:

$('input[name="inputName[]"]')

и если вы хотите проверить наличие двух атрибутов (здесь:name и value):

$('input[name="inputName[]"][value=someValue]')

если селектор содержится в переменной, может быть полезен приведенный ниже код:

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\');
//escaped_selector_name = users\[0\]\[first\:name\]

в этом случае мы префикс всех специальных символов с двойной обратной косой чертой.