閉じるアイコンの代わりに画面上のどこかをクリックしてjQueryダイアログを閉じるデフォルトのオプションはありますか?
編集:これは、jQuery UIダイアログを拡張して、外部をクリックしたときに閉じる機能とその他の機能を追加したプラグインです。 https://github.com/jasonday/jQuery-UI-Dialog-extended
ポピンの外側をクリックしたときにjquery UIダイアログを閉じる3つの方法を次に示します。
ダイアログがモーダル/バックグラウンドオーバーレイの場合: http://jsfiddle.net/jasonday/6FGqN/
jQuery(document).ready(function() {
jQuery("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 100,
modal: true,
open: function() {
jQuery('.ui-widget-overlay').bind('click', function() {
jQuery('#dialog').dialog('close');
})
}
});
});
ダイアログがモーダルでない場合方法1: http://jsfiddle.net/jasonday/xpkFf/
// Close Pop-in If the user clicks anywhere else on the page
jQuery('body')
.bind('click', function(e) {
if(jQuery('#dialog').dialog('isOpen')
&& !jQuery(e.target).is('.ui-dialog, a')
&& !jQuery(e.target).closest('.ui-dialog').length
) {
jQuery('#dialog').dialog('close');
}
});
非モーダルダイアログ方法2: http://jsfiddle.net/jasonday/eccKr/
$(function() {
$('#dialog').dialog({
autoOpen: false,
minHeight: 100,
width: 342,
draggable: true,
resizable: false,
modal: false,
closeText: 'Close',
open: function() {
closedialog = 1;
$(document).bind('click', overlayclickclose); },
focus: function() {
closedialog = 0; },
close: function() {
$(document).unbind('click'); }
});
$('#linkID').click(function() {
$('#dialog').dialog('open');
closedialog = 0;
});
var closedialog;
function overlayclickclose() {
if (closedialog) {
$('#dialog').dialog('close');
}
//set to one because click on dialog box sets to zero
closedialog = 1;
}
});
JQueryダイアログウィンドウを作成するとき、JQueryはui-widget-overlayクラスを挿入します。クリック関数をそのクラスにバインドしてダイアログを閉じると、探している機能が提供されます。
コードは次のようなものになります(テストされていません):
$('.ui-widget-overlay').click(function() { $("#dialog").dialog("close"); });
編集:以下はKendoについてもテストされています:
$('.k-overlay').click(function () {
var popup = $("#dialogId").data("kendoWindow");
if (popup)
popup.close();
});
ページで開くことができる複数のダイアログがある場合、背景をクリックすることでそれらのいずれかを閉じることができます:
$('body').on('click','.ui-widget-overlay', function() {
$('.ui-dialog').filter(function () {
return $(this).css("display") === "block";
}).find('.ui-dialog-content').dialog('close');
});
(モーダルダイアログでのみ機能します。 '。ui-widget-overlay'に依存します。また、いずれかの背景がクリックされるたびにダイアログを閉じますallを開きます。)
サイト全体のすべてのダイアログでこれを行いたい場合は、次のコードを試してください...
$.extend( $.ui.dialog.prototype.options, {
open: function() {
var dialog = this;
$('.ui-widget-overlay').bind('click', function() {
$(dialog).dialog('close');
});
}
});
この投稿は役に立つかもしれません:
http://www.jensbits.com/2010/06/16/jquery-modal-dialog-close-on-overlay-click/
ボックスで覆われた領域の外側をクリックしてjQuery UIモーダルダイアログを閉じる方法 使用方法に応じてoverlay
クリックまたはライブイベントを適用するタイミングと方法の説明も参照してくださいページ上のダイアログ。
場合によっては、ジェイソンの答えはやり過ぎです。また、$('.ui-widget-overlay').click(function(){ $("#dialog").dialog("close"); });
は常に動的コンテンツで機能するとは限りません。
私が見つけた解決策はすべての場合に機能します:
$('body').on('click','.ui-widget-overlay',function(){ $('#dialog').dialog('close'); });
前の投稿のコードが機能しない場合は、これを試してください:
$("a.ui-dialog-titlebar-close")[0].click();
少し遅れましたが、これは私のために働いた解決策です。モーダルがオーバーレイタグ内にある場合に最適です。そのため、モーダルコンテンツ以外の場所をクリックすると、モーダルが閉じます。
[〜#〜] html [〜#〜]
<div class="modal">
<div class="overlay">
<div class="modal-content">
<p>HELLO WORLD!</p>
</div>
</div>
</div>
[〜#〜] js [〜#〜]
$(document).on("click", function(event) {
if ($(event.target).has(".modal-content").length) {
$(".modal").hide();
}
});
これを試して:
$(".ui-widget-overlay").click(function () {
$(".ui-icon.ui-icon-closethick").trigger("click");
});
同じ問題に直面して、モーダルダイアログでも非モーダルダイアログでも、ダイアログの外側をクリックするとダイアログを閉じることができる小さなプラグインを作成しました。同じページで1つまたは複数のダイアログをサポートします。
私のウェブサイトの詳細はこちら: http://www.coheractio.com/blog/closing-jquery-ui-dialog-widget-when-clicking-outside
ローラン