Я нашел проблемы в использовании STL в многопоточном коде. Даже если Вы не совместно используете объекты STL через потоки, много реализаций используют неориентированные на многопотоковое исполнение конструкции (как ++ для подсчета ссылок вместо взаимно блокируемого инкрементного стиля или наличия неориентированных на многопотоковое исполнение средств выделения).
В каждом из этих случаев, я все еще решил использовать STL и решить проблемы (существует достаточно рычагов для получения то, что Вы хотите).
, Даже если бы Вы решили сделать свои собственные наборы, это была бы хорошая идея следовать за стилем STL для итераторов так, чтобы можно было использовать алгоритмы и другие функции STL, которые воздействуют только на итераторы.
Оба обработчика будут работать, модель событий jQuery позволяет использовать несколько обработчиков для одного элемента, поэтому более поздний обработчик не отменяет более старый обработчик.
Обработчики будет выполняться в том порядке, в котором они были связаны .
Предположим, у вас есть два обработчика, f и g , и вы хотите убедиться, что они выполняются в известном и фиксированном порядке, тогда просто инкапсулируйте их:
$("...").click(function(event){
f(event);
g(event);
});
Таким образом, существует (с точки зрения jQuery) только один обработчик, который вызывает f и g в указанном порядке .
Вызываются оба обработчика.
Вы можете подумать о встроенной привязке событий (например, "onclick = ..."
), где большой недостаток состоит в том, что для события может быть установлен только один обработчик.
jQuery соответствует модели регистрации событий уровня 2 DOM :
Модель событий DOM позволяет регистрация многократного мероприятия слушатели на одном EventTarget. Чтобы добиться этого, слушатели событий не дольше хранятся как значения атрибутов
Вы должны иметь возможность использовать цепочку для последовательного выполнения событий, например:
$('#target')
.bind('click',function(event) {
alert('Hello!');
})
.bind('click',function(event) {
alert('Hello again!');
})
.bind('click',function(event) {
alert('Hello yet again!');
});
Я думаю, что приведенный ниже код делает то же самое
$('#target')
.click(function(event) {
alert('Hello!');
})
.click(function(event) {
alert('Hello again!');
})
.click(function(event) {
alert('Hello yet again!');
});
Источник: http: // www.peachpit.com/articles/article.aspx?p=1371947&seqNum=3
TFM также говорит:
Когда событие достигает элемента, все обработчики привязаны к этому событию type для элемента увольняются. Если есть несколько обработчиков зарегистрированы, они всегда будут выполняться в том порядке, в котором были связаны. После выполнения всех обработчиков событие продолжается по нормальный путь распространения событий.