Очередь обработчика событий jQuery - PullRequest
8 голосов
/ 29 мая 2010

Обзор проблемы

В jQuery порядок, в котором вы связываете обработчик, - это порядок, в котором они будут выполняться, если вы привязываете к одному и тому же элементу.

Например:

$('#div1').bind('click',function(){
// code runs first
}); 

$('#div1').bind('click',function(){
// code runs second
});

Но что, если я хочу, чтобы второй связанный код запускался первым?

.

Мое текущее решение

В настоящее время мое решение состоит в том, чтобы изменить очередь событий:

$.data(domElement, 'events')['click'].unshift({
                            type : 'click',
                            guid : null,
                            namespace : "",
                            data : undefined,
                            handler: function() {
                                // code
                            }
                        });

.

Вопрос

Что-то не так с моим решением?

Можно ли безопасно использовать значение null в качестве значения для guid?

Заранее спасибо.

.

1 Ответ

1 голос
/ 29 мая 2010

Есть интересный плагин под названием eventstack .Это позволяет привязывать события либо к верхней, либо к нижней части очереди событий.Я не знаю, насколько общая ваша проблема, или вы хотите изменить или произвольно упорядочить события в вашем стеке, но плагин может упростить вашу задачу.

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

Ваш подход может быть лучшим для ваших требований, но, возможно, это и варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...