Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2008, 14:55
Интересующийся
Отправить личное сообщение для Aderba Посмотреть профиль Найти все сообщения от Aderba
 
Регистрация: 06.10.2008
Сообщений: 17

Как определить есть ли у объекта событие 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

Последний раз редактировалось Aderba, 06.10.2008 в 15:01.
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2008, 15:09
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

A чем новая версия не устраивает?
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2008, 15:15
Интересующийся
Отправить личное сообщение для Aderba Посмотреть профиль Найти все сообщения от Aderba
 
Регистрация: 06.10.2008
Сообщений: 17

Да всем устраивает, просто все реализовано на старой и если на новую переходить очень много переделывать, плюс у нас там свои небольшие изменения в старую библиотеку вносились. Поэтому вот и спрашиваю, может кто знает как на старой сделать, понятно, что щас все на новую переходят, я б тоже с радостью, но никак
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2008, 15:17
Интересующийся
Отправить личное сообщение для Aderba Посмотреть профиль Найти все сообщения от Aderba
 
Регистрация: 06.10.2008
Сообщений: 17

В общем мне просто нужно проверить есть ли объекта событие onChangeи как-то достать его содержимое
Ответить с цитированием
  #5 (permalink)  
Старый 06.10.2008, 19:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ну инициализируйте какой-нибудь атрибут при добавлении обработчика события
$(…).attr({onchangeexist: true}).change(function() {…});

if($(…).attr('onchangeexist')) {…}
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2008, 10:42
Интересующийся
Отправить личное сообщение для Aderba Посмотреть профиль Найти все сообщения от Aderba
 
Регистрация: 06.10.2008
Сообщений: 17

так а если до добавления моего обработчика события у объекта уже есть это событие и обработчик, вот как мне именно это проверить есть это событие у объекта. То что вы мне посоветовали, это как я понимаю непосредственно когда я свой обработчик события добавляю в ready, это то так, но мне то нужно, если у объекта уже есть событие и обработчик, то свой обработчик поставить на первое место, а потом уже все остальные выполнять.
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2008, 18:58
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Aderba,
Узнать был ли установлен обработчик на элемент, получить список обработчиков и менять порядок выполнения обработчиков нельзя на уровне JavaScript. Точно не уверен, но если jQuery не использует стек обработчиков, вызываемый при событии, то сделать задуманное у вас не получится.

Последний раз редактировалось Андрей Параничев, 07.10.2008 в 19:06.
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2008, 14:02
Интересующийся
Отправить личное сообщение для Aderba Посмотреть профиль Найти все сообщения от Aderba
 
Регистрация: 06.10.2008
Сообщений: 17

Да спасибо я это уже поняла, изрядно помучавшись и так ничего не добившись, пришлось просто обновить версию библиотеки jQuery до 1.2.6 и внести в нее соответственно свои изменения. Вот и все заработало, как по маслу.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Как отловить событие onchange на LookUp поле? spps Events/DOM/Window 0 09.09.2008 16:02
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40
Определить координаты объекта в таблице ner2000 Events/DOM/Window 2 14.06.2008 01:56