jQuery - выберите элемент по атрибуту name - PullRequest
2 голосов
/ 17 января 2011

Я знаю, что вы можете сделать это с [name], но проблема в том, что мой атрибут входного имени содержит квадратные скобки [] внутри: (

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

Есть ли другой способ, которым я мог бы выбрать этот элемент по полю имени?

Ответы [ 3 ]

2 голосов
/ 17 января 2011

Вы должны уйти от них, вы можете сделать это с помощью замены регулярного выражения

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 голос
/ 17 января 2011

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

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

Если это не сработает, вы можете использовать метод .filter(),использование прямого доступа к DOM:

$('input').filter(function() {
    return this.name == thename;
})...
1 голос
/ 17 января 2011
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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...