Почему jQuery 1.3.2 не находит существующий элемент управления по идентификатору - что я делаю не так? - PullRequest
0 голосов
/ 11 ноября 2009

У меня сложная html-форма, и я использую jQ для некоторых работ там. И большую часть дня провел в попытках понять проблему, которую я смог проследить до того момента, когда jQuery не смог найти существующий элемент управления. Команда $("#FormView1_CopaBOM973row%18%_dkF").width(); вернула ноль. Сначала я подумал об ошибке в реализации width () и попытался $("#FormView1_CopaBOM973row%18%_dkF").attr("id"); - что ничего не вернуло, а его длина была 0.

Я делаю это в Firefox 3.5.5, использую DOM-Explorer Firebug, чтобы проверить, что это было. И наконец, окончательный тест сработал: $(document.getElementById("FormView1_CopaBOM973row%18%_dkF")).attr("id") вернул ожидаемый результат.

Итак, моя единственная идея состояла бы в том, что любые «подозрительные» символы должны были бы убежать, но в документе не упоминается подчеркивание или процент как «подозрительный». Итак, где моя вина?

И пожалуйста. не просите больше «кода», я не думаю, что эта проблема больше не понадобится ...

Ответы [ 7 ]

2 голосов
/ 12 ноября 2009

Как сказал Мэтью, специальные символы не допускаются в атрибуте ID. Это не проблема jQuery. Вот полный справочник.

1 голос
/ 11 ноября 2009

Похоже, что список специальных символов внизу этой страницы неполон. Попробуйте избежать знака процента:

$("#FormView1_CopaBOM973row\\%18\\%_dkF")
0 голосов
/ 11 ноября 2009

Я думаю, это из-за специальных символов, которые у вас есть в вашем удостоверении личности.

Попытка:

$("[id=FormView1_CopaBOM973row%18%_dkF]").width();
0 голосов
/ 11 ноября 2009

Эти проценты %, по-видимому, недопустимы в селекторах CSS (, по-видимому, , потому что я не могу найти их в w3 spec , или это должна быть невыявленная ошибка jQuery), но не в HTML-атрибутах. Побег из них делает работу, хотя:

$("#FormView1_CopaBOM973row\\%18\\%_dkF").width();
0 голосов
/ 11 ноября 2009

Экранирование знаков процента, похоже, работает.

$("#FormView1_CopaBOM973row\\%18\\%_dkF")
0 голосов
/ 11 ноября 2009

'%' не является допустимым символом для атрибута id, поэтому, вероятно, jQuery это не нравится.

0 голосов
/ 11 ноября 2009

try $ ("# FormView1_CopaBOM973row% 18% _dkF") [0] .id;

...