JQuery: выбрать все входы с уникальным идентификатором (Regex / Wildcard Selector) - PullRequest
9 голосов
/ 25 апреля 2010

У меня есть несколько текстовых полей в веб-форме, которые имеют идентификаторы, подобные этому:

txtFinalDeadline_1
txtFinalDeadline_2
txtFinalDeadline_3
txtFinalDeadline_4

В моем jQuery, как мне найти все из них, чтобы присвоить им значение. До того, как я получил подчеркивание, и все они были названы txtFinalDeadline, я мог сделать это, и это сработало.

$(this).find("#txtFinalDeadline").val(formatDate);

Однако это было, когда им всем было присвоено одно и то же. Теперь у меня есть _x после имени, и я не уверен, как назначить им то же значение, что и раньше.

Ответы [ 3 ]

6 голосов
/ 25 апреля 2010

Не знаю, могу ли я гарантировать "по порядку", но этот избиратель должен работать:

$(this).find('input[id^=textFinalDeadline_]').val(formatDate);

Уже тогда jQuery оптимизирован для обработки id с особым образом и может обрабатывать только 1 идентификатор.

Лучше было бы использовать в этих текстовых полях класс (возможно, date), чтобы вы могли просто использовать селектор '.date'.

6 голосов
/ 25 апреля 2010

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

Использование встроенных подстановочных знаков селектора jQuery:

$('#textFinalDeadline_\\S*').val(formatDate);

обновление: Я заметил, что этот метод больше не работает, поскольку jQuery 1.3.2.

Использование селекторов CSS3:

$('input[id^=textFinalDeadline_]').val(formatDate);

Использование .filter()& match():

$('input').filter(function(){
  return this.id.match(/txtFinalDeadline_*/);
}).val(formatDate);

Наконец, вы можете использовать селектор регулярных выражений .

$('input:regex(id, txtFinalDeadline_*)').val(formatDate);
0 голосов
/ 25 апреля 2010

Помогает ли вам Child Selector ?

...