我知道您可以使用[name]
执行此操作,但问题是我的输入名称属性包含方括号[]
:(
var thename = 'blah[blah][]'; // <- this value is dynamic
$("*[name='"+thename+"']").each()...
我可以通过名称字段选择此元素吗?
答案 0 :(得分:2)
你必须逃避它们,你可以用正则表达式替换
来做到这一点var thename = 'blah[blah][]'; // <- this value is dynamic
$("*[name='"+thename.replace(/\[/g, '\\\\[').replace(/\]/g, '\\\\]')+"']").each()...
或制作功能
function esc(a) { return a.replace(/\[/g, '\\\\[').replace(/\]/g, '\\\\]'); }
var thename = 'blah[blah][]'; // <- this value is dynamic
$("*[name='"+esc(thename)+"']").each()...
答案 1 :(得分:1)
If you wish to use any of the meta-characters
( such as !"#$%&'()*+,./:;?@[\]^`{|}~ ) as a
literal part of a name, you must escape the
character with two backslashes: \\.
For example, if you have an an element with
id="foo.bar", you can use the selector $("#foo\\.bar").
答案 2 :(得分:1)
首先尝试在属性选择器中使用双引号:
$('*[name="'+thename+'"]').each()...
如果这不起作用,您可以使用.filter()
方法,利用直接DOM访问:
$('input').filter(function() {
return this.name == thename;
})...