Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Как определить есть ли у объекта событие onChange


Автор: Aderba 6.10.2008, 14:07
У меня такая вот проблемка, мне нужно проверить есть ли у объекта событие 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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)