[解決済み] jQuery UI - 外でクリックされたらダイアログを閉じる
2022-05-13 21:53:34
質問
特定の要素がクリックされたときに表示されるjQuery UIダイアログがあります。 これらのトリガーとなる要素またはダイアログ自体以外の場所でクリックが発生した場合、ダイアログを閉じたいと思います。
以下は、ダイアログを開くためのコードです。
$(document).ready(function() {
var $field_hint = $('<div></div>')
.dialog({
autoOpen: false,
minHeight: 50,
resizable: false,
width: 375
});
$('.hint').click(function() {
var $hint = $(this);
$field_hint.html($hint.html());
$field_hint.dialog('option', 'position', [162, $hint.offset().top + 25]);
$field_hint.dialog('option', 'title', $hint.siblings('label').html());
$field_hint.dialog('open');
});
/*$(document).click(function() {
$field_hint.dialog('close');
});*/
});
最後の部分のコメントを外すと、ダイアログは開きません。これは、ダイアログを開くのと同じクリックが、再びダイアログを閉じているからだと思います。
最終的な動作コード
注:これは
jQuery の外部イベント
プラグイン
$(document).ready(function() {
// dialog element to .hint
var $field_hint = $('<div></div>')
.dialog({
autoOpen: false,
minHeight: 0,
resizable: false,
width: 376
})
.bind('clickoutside', function(e) {
$target = $(e.target);
if (!$target.filter('.hint').length
&& !$target.filter('.hintclickicon').length) {
$field_hint.dialog('close');
}
});
// attach dialog element to .hint elements
$('.hint').click(function() {
var $hint = $(this);
$field_hint.html('<div style="max-height: 300px;">' + $hint.html() + '</div>');
$field_hint.dialog('option', 'position', [$hint.offset().left - 384, $hint.offset().top + 24 - $(document).scrollTop()]);
$field_hint.dialog('option', 'title', $hint.siblings('label').html());
$field_hint.dialog('open');
});
// trigger .hint dialog with an anchor tag referencing the form element
$('.hintclickicon').click(function(e) {
e.preventDefault();
$($(this).get(0).hash + ' .hint').trigger('click');
});
});
どのように解決するのですか?
をチェックしてください。 jQuery Outside Events プラグイン
できるようにする。
$field_hint.bind('clickoutside',function(){
$field_hint.dialog('close');
});
関連
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] jQuery UIダイアログのクローズボタンを削除するには?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] ネストされたJSONオブジェクト - すべてに配列を使用しなければならないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] express.json()とexpress.urlencoded()とは何ですか?
-
[解決済み] SVG のテキスト要素の幅を取得する
-
[解決済み] ネストしたオブジェクトのプロパティを動的に設定する
-
[解決済み] JavaScriptでクエリ文字列が存在するかどうかを確認するには?
-
[解決済み] Firebase用Cloud Functionsのトリガーは時間通り?
-
[解決済み] Javascript/jQuery。複数選択で値を設定(選択)する
-
[解決済み] Reactjsで入力にフォーカスが当たったとき、すべてのテキストを選択するには?
-
[解決済み] JavaScriptの文字列は何バイトですか?