_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();
});
そしてコンソール出力:
このイベントが処理されないのはなぜですか、または発生していないのですか? どうすればこれをデバッグできますか?
アップデート:
この答えは、私の問題ではありませんが、ヒントを与えてくれました。OP はon
element からバインディングを呼び出していますbody
。だから私は変わった
$(widget).on("ftpwidget:testeventname", function (event, data) {
に
$("body").on("ftpwidget:testeventname", function (event, data) {
そしてそれはうまくいきました
$("#video").on("ftpwidget:testeventname", function (event, data) {
だから今、私はそれを機能させていますが、その理由はよくわかりません。それはスコープの「もの」ですか?私が考えていた
testeventname
「に登録したいwidget
」
何が起きてる?