Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> getElemntById по последнему слову 
:(
    Опции темы
Samotnik
Дата 20.10.2010, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



привет. как можно реализовать следующее
В одном компоненте, есть элемент с айдишником, который заканчивается на Title, проблема в том, что айдишник не постоянен. В зависимости от того в каком виде предоставляется компонент меняется и айдишник. т.е. айдишки могут быть 
listTitle, detailTitle, imageTitle, tableTitle  и т.д.
Хочется единый механизм, который смог бы брать этот компонент по разным айдишникам. В этом и вопрос. Каким образом можно брать элемент по айдишнику, если он все время разный, но заканчивается всегда одинаково на Title
PM MAIL   Вверх
ksnk
Дата 20.10.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Samotnik @  20.10.2010,  21:24 Найти цитируемый пост)
Каким образом можно брать элемент по айдишнику, если он все время разный, но заканчивается всегда одинаково на Title 

медленно и печально, хотя и не так уж сложно.
Код

$('[id$=Title]:first') ;// :first - первый попавшийся...

примерно так. Только неплохо бы сначала ограничить как-нибудь фронт работ. Искать среди div'ов или внутри какого-нибудь элемента, к примеру.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SelenIT
Дата 20.10.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Почему медленно? Имхо, в новых браузерах, где работает selector api, должно быть достаточно шустро (особенно если положиться на уникальность компонента и довериться document.querySelector-у)...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 21.10.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(SelenIT @  20.10.2010,  23:05 Найти цитируемый пост)
Почему медленно?

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

Цитата(SelenIT @  20.10.2010,  23:05 Найти цитируемый пост)
 document.querySelector-

Неужели этот querySelector уже настолько наворочен, насколько навернули свсой селектор в jQuery?
В примерах на этот селектор я не встречал выборок по атрибутам и тем более по частям атрибутов. Я плохо искал? 




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SelenIT
Дата 21.10.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Я наивно полагаю, что selector api поддерживает все селекторы, кот. в принципе поддерживает браузер (кроме, возможно, динамических псевдоклассов и псевдоэл-тов). Как минимум, в ФФ 3.6.11, Хроме 7, Сафарях 5.0.2 и Опере 10.63
Код

document.querySelector('*[id$=Title]')

работает. И из 100k нод находит нужную за 10-50 мс. Медленее всех в ФФ — первый раз 40-50, последующие 20 (видимо, где-то что-то кеширует), в остальных новых браузерах порядка 10. Цикл по элементам (даже с известным именем) во всех браузерах на порядок дольше (120-400 мс).

Насколько я в курсе, одно из нововведений свежеиспеченного jQuery 1.4.3 — переход на selector api везде, где только получается...

UPD: в IE8 (в станд. режиме) тоже работает! Из тех же 100k выбирает за 60-80 мс, циклом — за 500 с лишком.

Это сообщение отредактировал(а) SelenIT - 21.10.2010, 10:42


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 21.10.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(SelenIT @  21.10.2010,  10:38 Найти цитируемый пост)
И из 100k нод находит нужную за 10-50 мс. Медленее всех в ФФ — первый раз 40-50, последующие 20 (видимо, где-то что-то кеширует), в остальных новых браузерах порядка 10. Цикл по элементам (даже с известным именем) во всех браузерах на порядок дольше (120-400 мс).

Ok! Буду знать. 
Надо бы снова почитать jQuery в исходниках, а то как-то отстал уже от жизни smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Samotnik
Дата 21.10.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



SelenIT, ksnk,  СПАСИБО !  smile 
Только задание изменилось  smile 
Во-первых ExtJS. На нем написана такая конструкция
Код

var linkEl = (Ext.get(el.child('.ceTitle')) ? el.child('.ceTitle') : Ext.get(el.child('.ceImageTextTitle')));

где, el - это элемент, внутри которого нужно достать элемент у которого класс заканчивается на Title. 
Даже если не знать ExtJS - интуитивно понятно Ext.get() - получает элемент,  el.child() - берет детенка у родителя. 
Проблема в том, что эта конструкция перестала работать, т.к. появились новые классы, а десятки условий и проверок писать не хочется. Хочется иметь универсальный механизм.

Это сообщение отредактировал(а) Samotnik - 21.10.2010, 11:45
PM MAIL   Вверх
SelenIT
Дата 21.10.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Судя по всему, нужно заменить get на select. Но вот понимает ли Ext-овский select селектор по части атрибута — сходу в гугле не нашел, надо проверять...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.