Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Символ * в id элемента и jQuery


Автор: bankir 3.8.2010, 13:13
Всем привет!
Подскажите пожалуйста, на страничке есть элементы с символом * в атрибуте id.
Например: 
Код

<input id='quantity_*0056289'>

Со старой версией библиотеки (jQuery 1.2.6) все работало
Код

var quantity=$('#quantity_'+id).val();
alert(textid);

(в id передается *0056289) 
мне выводило содержимое инпута, а вот давеча поставил последнюю версию jQuery JavaScript Library v1.4.2 и теперь мне выдает undefined.
Я заметил, что undefined выдает если в атрибуте id есть символ *
Мне просто от этого символа никак не отказаться - это уникальный код товара по которому идет идентификация.

Так вот, подскажите пожалуйста как мне быть. Это глюк новой версии или этот символ нельзя использовать (как символы . или [ или ]). Ведь в старой версии работало.От новой версии отказываться неохото, там много вкусностей а-ля live()

Выручайте плиз.

Автор: bars80080 3.8.2010, 14:26
Цитата(bankir @  3.8.2010,  13:13 Найти цитируемый пост)
Мне просто от этого символа никак не отказаться - это уникальный код товара по которому идет идентификация.

замени его ещё на выдачи. раз это уникальный id товара, значит он выбирается в одном месте, достаточно прописать замену на лету на некий другой символ и всё.

Автор: bankir 3.8.2010, 14:36
спасибо за совет.
в принципе я тоже думал об этом. не хотелось бы использовать такой костыль.
надо сначала в выдаче сделать str_replace() на другой символ, который будет уникальным.
потом при передаче аяксом на стороне сервера снова делать str_replace() на *
еще надо учитывать, что если я генерирую новый элемент на лету и вставляю его аяксом - надо тоже делать замену.
слишком много надо будет всего помнить в разных местах.

просто еще есть id без *

ну что ж, придется делать костыли. Просто обидно, что в старой версии работало, но она уже устарела и надо использовать новую.

Автор: bars80080 3.8.2010, 14:41
ну, костыль тут всего лишь следствие использования служебного символа *, который чуть ли не в половине языков имеет самые разные назначения. надо было избегать изначально

Автор: SelenIT 3.8.2010, 14:56
Цитата(bankir @  3.8.2010,  13:13 Найти цитируемый пост)
этот символ нельзя использовать (как символы . или [ или ])

http://www.w3.org/TR/html401/types.html#type-id

Автор: bankir 3.8.2010, 15:33
Да все эти id берутся из 1с из поля "код товара". Заводились еще до меня, а чтобы поменять нужно многое переделывать: от склеивания страниц в поисковиках (ссылки формата page.php?id=*002342) до всяких бирж.
Хотя в принципе надо всего-лишь сделать редирект на новую страницу без знака *
Кто-нибудь подскажет регулярку для mod_rewrite чтобы заменить * на другой символ (например it или просто i)? А то я в регулярных выражениях вообще не секу.

Автор: bankir 4.8.2010, 09:47
Всем спасибо! Пришлось использовать вышеописанный костыль.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)