Как определить есть ли у объекта событие onChange в jQuery-1.1.2
У меня такая вот проблемка, мне нужно проверить есть ли у объекта событие onChange и если есть то мне нужно свою функцию на это событие поставить выполняться раньше всех остальных функций, которые прописаны изначально в этом событиии. Свою функцию на это события я добовляю использую ready();
Я нашла реализацию своей проблемы (пример ниже), но только с помощью jQuery-1.2.6, и вот в чем проблема то что в этой новой версии появились ряд функций, которых нет в старой версии jQuery-1.1.2. Подскажите, может в старой версии тоже можно как-то разрешить мою проблему.Спасибо. //Функция jQuery.fn.bindFirst = function(evt, fn) { var events = $(this).data("events");//Вот именно функции data в старой версии нет, может как то по другому можно получить массив событий объекта в старой версии? var handlers = []; for (var type in events) { if (type == evt) { for (var guid in events[type]) handlers.push(events[type][guid]); $(this).unbind(evt); $(this).bind(evt, function() { fn(); for (var i = 0; i < handlers.length; i++) handlers[i](); }); break; } } return $(this); } //Html реализация <html> <head> <script type='text/javascript' src='/jquery-1.2.6.pack.js'></script> <script> $('document').ready(function() { $('#test').bind('click', function() { alert('Click #1'); }); $('#test').bind('click', function() { alert('Click #2'); }); $('#test').bindFirst('click', function() { alert('Click #3'); }); }); </script> </head> <body> <div id="test">123</div> </body> </html> В итоге должно получиться: Click #3 Click #1 Click #2 |
A чем новая версия не устраивает?
|
Да всем устраивает, просто все реализовано на старой и если на новую переходить очень много переделывать, плюс у нас там свои небольшие изменения в старую библиотеку вносились. Поэтому вот и спрашиваю, может кто знает как на старой сделать, понятно, что щас все на новую переходят, я б тоже с радостью, но никак
|
В общем мне просто нужно проверить есть ли объекта событие onChangeи как-то достать его содержимое
|
Ну инициализируйте какой-нибудь атрибут при добавлении обработчика события
$(…).attr({onchangeexist: true}).change(function() {…}); if($(…).attr('onchangeexist')) {…} |
так а если до добавления моего обработчика события у объекта уже есть это событие и обработчик, вот как мне именно это проверить есть это событие у объекта. То что вы мне посоветовали, это как я понимаю непосредственно когда я свой обработчик события добавляю в ready, это то так, но мне то нужно, если у объекта уже есть событие и обработчик, то свой обработчик поставить на первое место, а потом уже все остальные выполнять.
|
Aderba,
Узнать был ли установлен обработчик на элемент, получить список обработчиков и менять порядок выполнения обработчиков нельзя на уровне JavaScript. Точно не уверен, но если jQuery не использует стек обработчиков, вызываемый при событии, то сделать задуманное у вас не получится. |
Да спасибо я это уже поняла, изрядно помучавшись и так ничего не добившись, пришлось просто обновить версию библиотеки jQuery до 1.2.6 и внести в нее соответственно свои изменения. Вот и все заработало, как по маслу.
|
Часовой пояс GMT +3, время: 01:29. |