web-dev-qa-db-ja.com

name属性に角括弧が含まれる入力用のjQueryセレクター

Name属性に角かっこがあるこの要素を選択しようとしています:

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

私はこれを試しました(動作しません):

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

また、これも行いません:

$('input[inputName&#91;&#93;=someValue]')

またはこれ:

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

編集:あなたが指摘したように、$('input[inputName=someValue]')は機能しません。私がやろうとしていたことは:$('input[name=inputName][value=someValue]')。 (ただし、name属性に[]を使用)。

173
aidan

jQueryドキュメント に従って、これを試してください:

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

[編集]しかし、それがあなたのセレクターの正しい構文かどうかはわかりません。おそらくあなたは:

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

バックスラッシュを使用して、jQueryセレクターで「面白い」文字を引用できます。

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

属性値には、引用符を使用できます。

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

さて、私はあなたの例に少し混乱しています。 HTMLは正確にどのように見えますか?特に、文字列「inputName」はどこに表示されますか?

編集固定されたbogosity;ありがとう@Dancrumb

76
Pointy

属性セレクターの構文は[name=value]です。ここで、nameは属性名で、valueは属性値です。

そのため、属性inputが値inputName[]を持つすべてのname要素を選択する場合:

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

また、2つの属性(ここではnamevalue)を確認する場合:

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

セレクターが変数に含まれている場合、以下のコードが役立つ場合があります。

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

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

この場合、すべての特殊文字の前に二重バックスラッシュを付けます。

6
Eric Kigathi

異なる引用符で区切るだけです:

<input name="myName[1][data]" value="myValue">

JQuery:

var value = $('input[name="myName[1][data]"]').val();
0
slva2000