2010-05-28 4 views
7

Обзора проблемыJQuery обработчик событий очередь

В 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

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

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

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

+0

Спасибо. Поскольку я пишу плагин, я не хочу, чтобы пользователь вручную запускал настраиваемое событие, которое я делал каждый раз. Я хочу, чтобы это было автоматически. Eventstack не помогает ни потому, что я не хочу менять стек, но просто помещаю событие своего плагина в начало стека. – resopollution

Смежные вопросы