[英]jQuery selector for inputs with square brackets in the name attribute
我試圖選擇這個在 name 屬性中有方括號的元素:
<input type="text" name="inputName[]" value="someValue">
我試過這個(這不起作用):
$('input[inputName[]=someValue]')
這也不是:
$('input[inputName[]=someValue]')
或這個:
$('input["inputName[]"=someValue]')
編輯:正如你們中的一些人指出的那樣, $('input[inputName=someValue]')
永遠不會工作。 我想做的是: $('input[name=inputName][value=someValue]')
。 (但在名稱屬性中使用[]
)。
根據jQuery 文檔,試試這個:
$('input[inputName\\[\\]=someValue]')
[編輯] 但是,我不確定這是否適合您的選擇器的語法。 你可能想要:
$('input[name="inputName[]"][value="someValue"]')
您可以使用反斜杠在 jQuery 選擇器中引用“有趣”的字符:
$('#input\\[23\\]')
對於屬性值,您可以使用引號:
$('input[name="weirdName[23]"]')
現在,我對你的例子有點困惑; 你的 HTML 到底是什么樣子的? 特別是字符串“inputName”出現在哪里?
編輯固定的笨重; 謝謝@Dancrumb
屬性選擇器語法是[name=value]
,其中name
是屬性名稱, value
是屬性值。
因此,如果要選擇屬性name
為inputName[]
所有input
元素:
$('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,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]
在這種情況下,我們用雙反斜杠作為所有特殊字符的前綴。
只需用不同的引號將其分開:
<input name="myName[1][data]" value="myValue">
查詢:
var value = $('input[name="myName[1][data]"]').val();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.