Событие, запускаемое виджетом Jquery, не обрабатывается и не запускается
У меня есть очень простой виджет, который, по-видимому, запускает событие через _trigger
что я не могу связать:
; (function ($) {
$.widget('testspace.ftpWidget', {
options: {},
widgetEventPrefix: 'ftpwidget:',
_create: function () {
var that = this;
that.paused = ko.observable(false);
},
_triggerPlayerInitialized: function () {
console.log("player initialized");
this._trigger("testeventname", null, null);
console.log("player testeventname supposedly fired");
},
pause: function () {
this.paused(!this.paused());
console.log("player paused");
this._triggerPlayerInitialized();
},
_destroy: function () { },
_setOption: function (key, value) { }
});
}(jQuery));
В HTML-файл:
<script>
jQuery(document).ready(function ($) {
$('#videoA').ftpWidget();
var widget = $('#videoA').data("testspace-ftpWidget");
console.log(widget);
$(widget).on("ftpwidget:testeventname", function (event, data) {
console.log("widget initialized");
});
widget.pause();
});
И вывод консоли:
Почему это событие не обрабатывается / или даже не запускается? Как я могу отладить это?
Обновить:
Этот ответ, хотя и не моя проблема, дал мне подсказку. ОП звонит on
привязка от элемента body
, Итак, я изменился
$(widget).on("ftpwidget:testeventname", function (event, data) {
в
$("body").on("ftpwidget:testeventname", function (event, data) {
и это сработало, так же
$("#video").on("ftpwidget:testeventname", function (event, data) {
Так что теперь у меня это работает, но я не понимаю, почему. Это сфера "вещь"? я думал
"Я хочу зарегистрироваться на testeventname
на widget
"
Что тут происходит?
1 ответ
Сам по себе _trigger может вызвать вашу функцию. В первом параметре вы указываете имя функции обратного вызова, которую вы хотите вызвать. Так что, если вы должны были изменить:
$('#videoA').ftpWidget();
в
$('#videoA').ftpWidget({
testeventname: function (event, data) {
console.log("widget initialized");
}
});
это также будет работать.