Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2010, 12:21
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

К информации интересующихся jQuery
Хелло.
Только что узнал, что jQuery хранит данные о навешанных на элемент обработчиках событий в свойстве data элемента.
Например такая задача: нужно элемент удалить и вместо него вставить "другие", а обработчики этого элемента перенести на один из "других". Элементы разного типа - например select и span.
(Это конечно в том случае если не "к месту" метод live и другого типа прослушка).

Исходные данные - заменяемый id = xxx:
<select id="xxx">

его обработчики:
$(document).ready(
    function() { 
   $('#xxx').click(function(){alert(this.tagName)});
   $('#xxx').mouseover(function(){alert('over')});
   $('#xxx').bind('mouseout', function(){alert('out');
});


Замена:
var obj =   document.getElementById('xxx'); // заменяемый
var $obj0 =   $('<div>me<span>на меня перенесется</span></div>'); // на что меняем
var obj2 =   $obj0.find('span')[0]; // на кого перенесутся обработчики
// манипуляции замены(взяты из самой библиотеки - там где клонирование)
var events = $(obj).data( "events" ); // !!!  
for ( var type in events ) {
    for ( var handler in events[ type ] ) {
        jQuery.event.add( obj2, type, events[ type ][ handler ], events[ type ][ handler ].data );
    }
}
$(obj).replaceWith($obj0); // заменяем


P.S. Если у элементов есть другие обработчики (указанные в атрибутах тегов или с помощью js то их конечно не перенесет, это надо делать самому).

Спасибо за внимание.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2010, 17:03
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Очень интересно. Я бы не прочь посмотреть на код метода data в разобранном виде с комментами, если не сложно, иначе не отказался бы от пинка в нужную сторону Заране благодарю.
__________________
Нет предела совершенству...
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2010, 18:16
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от sysya
иначе не отказался бы от пинка в нужную сторону
ну, собственно в чем проблема скачать, и посмотреть исходный код jQuery?
он хорошо структурирован
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2010, 19:02
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

А можно еще так:
при бинде jQuery добавляет атрибут jquery+timestamp к элементам. Можно перекидывать этот атрибут, и все дела.
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2010, 08:28
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от sysya Посмотреть сообщение
Очень интересно. Я бы не прочь посмотреть на код метода data в разобранном виде с комментами, если не сложно, иначе не отказался бы от пинка в нужную сторону Заране благодарю.
Код действительно откомментирован в самой библиотеке.
Работа метода data проста:
- связать данные с определенным узлом $('..').data(name, value)
- получить эти данные $('..').data(name)
- можно удалить связанные данные
Очень удобно хранить вспомогательную информацию.
А в первом сообщении я пишу о том, что сама библиотека делает то же самое, для своих процессов. Читал же я ядро - как то не упоминалось. Хотя полезно знать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery Click() не работает на объекте, созданном Ajax vovabigov jQuery 13 09.09.2012 14:25
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
jquery - Как получить полный путь? kirill.adw jQuery 5 20.11.2009 17:40
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 09:54