jQuery - 通过“name”属性选择一个元素

时间:2011-01-17 04:16:36

标签: jquery html jquery-selectors

我知道您可以使用[name]执行此操作,但问题是我的输入名称属性包含方括号[] :(

var thename = 'blah[blah][]'; // <- this value is dynamic
$("*[name='"+thename+"']").each()...

我可以通过名称字段选择此元素吗?

3 个答案:

答案 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"). 

引自http://api.jquery.com/category/selectors/

答案 2 :(得分:1)

首先尝试在属性选择器中使用双引号

$('*[name="'+thename+'"]').each()...

如果这不起作用,您可以使用.filter()方法,利用直接DOM访问:

$('input').filter(function() {
    return this.name == thename;
})...