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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить селектор элемента, JQuery last 
V
    Опции темы
tishaishii
Дата 9.10.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Как узнать селектор JQuery для конкретного элемента? Т.е. что нужно будет указать в $(document).find, чтобы потом снова найти этот элемент?
PM MAIL ICQ Skype   Вверх
ksnk
Дата 9.10.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



а сохранить ссылку куда-нибудь нельзя?


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


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Это сдвиг и отклонение?smile)))) Нужен селектор JQuery.
Вот есть функция:
Код

function getSelector(obj) {
   var result="";
   // ............... что-то там ваяется.
   return result;
}

нужно, хотя бы тело.
PM MAIL ICQ Skype   Вверх
ksnk
Дата 9.10.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Что потом с этим селектором будет происходить? Много ли таких элементов надо запомнить?

Вариантов решения - дофига, начиная от сохранения во внешнем массиве/объекте  этих  найденных элементов, до присвоения нового уникального Id этому самому элементу.


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


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Объясню по-другому. В простейшем варианте:
Код

function onCmdElementClick(evt) {
       this.sel=getJQuerySelector(evt.target);
       // $(document).find(this.sel) эквивалентно evt.target, т.е. this.sel можно однозначно идентифицировать evt.target с помощью find.
}


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

Это сообщение отредактировал(а) tishaishii - 10.10.2010, 09:44
PM MAIL ICQ Skype   Вверх
ksnk
Дата 10.10.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ну, например вот так может сработать, если структура документа не поменяется.
найти первый предок с ID, поднимаясь по дереву предков, затем выбрать все теги с тем-же именем как у исходного и вычислить его номер. Получится что-то вроде $('#PARENT TAG:eq(N)'). достаточно эффективный селектор, вроде как.

Что-то вроде 
Код

... .click( function(e){
  var self = e.target;
  $x=$(self).parents('[id!=]').first();
  var selector = 
     ($x.length?'#'+$x.attr('id')+' ':'')
     +self.tagName.toLowerCase()
   , found=-1;
  $(selector).each(function(idx){
    if(this===self){
      found=idx;
    };
  })
  selector +=':eq('+found+')';
  alert(selector);
})



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


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Спасибо. Вариант подходящий. Пока что.
Немного уточню:
Код

        function(e){
            var self=e.target;
            var selector=$(self).attr("id");
            if(selector) // вдруг у элемента есть идентификатор?
                selector="#"+selector;
            else {
                $x=$(self).parents("[id!=]").first();
                selector=($x.length?"#"+$x.attr("id")+" ":"")+self.tagName.toLowerCase();
                var found=-1;
                $(doc).find(selector).each(function(idx){
                    if(this===self) {
                        found=idx;
                        return false;
                    }
                    return true;
                });
                selector+=":eq("+found+")";
            }
            $("#match").val(selector);
            return false;
        }

Вообще, тема интересная. Разметка меняется динамически, да ещё структура страниц будет меняться с развитием сайта.
Видимо, мне нужно доупорядочить данные и разметку, а не с этой кашей разбираться.

Это сообщение отредактировал(а) tishaishii - 10.10.2010, 14:32
PM MAIL ICQ Skype   Вверх
ksnk
Дата 10.10.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



tishaishii, Если почаще вставлять какие-то "реперные" элементы с установленными ID, то будет устойчивее к изменениям стриницы. 

Да, кстати, я в своем примере забыл $x объявить как var. Так она становится глобальной и может где-нибудь вылезти...


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


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Спасибо большое, ksnk, за помощь.
Думаю, нужно начинать с движка. Эти "реперы" будут поставлены вручную, но как временное явление.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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