基本的なダイアログ ボックスを作成しようとしています。クリックするとダイアログ ボックスが表示されるリンク要素を指定できるようにしたいと考えています。
ダイアログ ボックスの HTML でデータ属性を使用して、この動作を指定しています。
<a id="launch-dialog" href="#"></a>
<div class="dialog" data-behavior="dialog" data-trigger="#launch-dialog">
<!-- dialog html -->
</div>
$(function(){
$("[data-behavior='dialog']").dialog();
});
実際の jQuery 拡張機能は、私が問題を抱えている部分です。本文でイベントが正しくトリガーされていないか'dopen'
、イベント バインディングが正しく設定されていません。のクリックイベントdata-trigger
は間違いなく発生しており、リッスンされています。「オープン検出」ログが表示されない理由はありますか?
(function($) {
var methods = {
init: function(options) {
if (this.data('trigger')) {
// Add an event listener which causes the dialog to
// open when the correct link is clicked.
$(this.data('trigger')).on('click', function(e) {
e.preventDefault();
// Trigger a global dialog open event which the dialog can subscribe to.
$('body').trigger('dopen');
});
}
},
// Various other methods not shown.
};
$.fn.dialog = function(method) {
// Method handling code not shown...
// Add handlers for custom events triggered on the body element.
$('body').bind('dopen', function(e) {
// This never happns:
console.log("Open detected");
});
};
})(jQuery);