Порядок событий в плагине jQuery - PullRequest
1 голос
/ 07 сентября 2011

Я использую cleditor плагин jQuery, который является редактором WYSIWYG. К сожалению, я столкнулся с ошибкой в ​​IE, связанной с обработчиком событий. Когда пользователь нажимает кнопку перед фокусировкой текстового поля, он получает сообщение об ошибке. Если они сфокусировали текстовое поле, это нормально, а в других браузерах это не проблема. Я не хочу редактировать плагин, потому что я хочу иметь возможность обновить его позже, и я не на 100% виноват в плагине (люди, которые пишут плагины, как правило, умны) В IE обработчик событий плагина запускается перед моим пользовательским обработчиком, по крайней мере во время отладки. Итак ...

Q: Как я могу гарантировать, что мой пользовательский обработчик событий запускается перед обработчиком событий плагина без редактирования плагина?

1 Ответ

1 голос
/ 07 сентября 2011

jQquery связанные события запускаются первыми на сработавшем элементе, и он всплывает до своих родителей один за другим, и на каждом элементе он будет запускать события в порядке, в котором они были связаны с этим элементом.

Редактировать:

Чтобы изменить порядок этих событий, просто измените объект событий, хранящийся в элементе.Ниже приведена демоверсия с скрипкой.Последнее событие будет инициировано первым, даже если оно было связано последним.

http://jsfiddle.net/FqafW/

$("#demo").bind('click',function(){
   console.log('event 1'); 
}).bind('click',function(){
   console.log('event 2'); 
}).bind('click',function(){
   console.log('event 3'); 
}).bind('click',function(){
    console.log('my event');
});

var clickEvents = $("#demo").data("events").click;
console.log(clickEvents);
var myClickEvent = clickEvents.pop();
console.log(myClickEvent);
console.log(clickEvents);
clickEvents.unshift(myClickEvent);
console.log(clickEvents);
...