Пользовательские мероприятия JQUERY, выстрел в одно место, но не другое
-
30-09-2019 - |
Вопрос
Вероятно, это просто мое собственное невежество о том, как работают события, но кто -то может объяснить это: пользовательское событие не будет стрелять в верхнюю часть функции, но будет стрелять в обратный вызов внутри этой функции.
Следующие работы (Custom Event Fires):
function foo() {
$.ajax( ... , function() {
$.event.trigger("custom" , data );
});
}
foo();
Следующее не работает (пользовательское событие не стреляет):
function foo() {
$.event.trigger("custom" , data );
$.ajax( ... , function() {
...
});
}
foo();
Привязка события следующим образом:
$(document).bind("custom custom1 custom2" , function( event, data ) {
...
});
Я действительно хочу, чтобы он стрелял прямо в верхней части функции. Любая помощь больше всего ценится!
Примечание. Это та же проблема в браузерах, а также с дополнительным аргументом данных или без него.
Решение
Тот факт, что он работает в асинхронном обратном вызове, заставляет меня поверить в это, когда foo (); называется, фактическое обязательство не произошло. Вы должны быть осторожны с порядок вещей, когда вы делаете это.
Ответ JWwishart, вероятно, работает, потому что сначала он обязателен ... затем звонит Фу. Если вы опубликуете весь код с заказом того, где что -то происходит, хотя это может быть легче отладить.
Другие советы
data
Похоже, не определен во втором (неработающем) методе.
Когда я определяю data
, это работает, как и ожидалось.
Следующее работает ...?
Я только связал «обычай» даже, я удалил двух других (чтобы сделать вещи максимально простыми.)
$(document).bind("custom" , function( event, data ) {
alert(data);
});
function foo() {
$.event.trigger("custom" , "Works" );
}
foo();