jQuery UI - Закройте Диалоговое окно, Когда Нажал Outside

У меня есть Диалоговое окно UI jQuery, которое отображено, когда определенные элементы нажаты. Я хотел бы закрыть диалоговое окно, если щелчок происходит где-нибудь кроме на тех, которые инициировали элементы или само диалоговое окно.

Вот код для открытия диалогового окна:

$(document).ready(function() {
    var $field_hint = $('
') .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 = $('
') .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('
' + $hint.html() + '
'); $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'); }); });

111
задан Sonny 9 April 2012 в 15:30
поделиться

2 ответа

Попробуйте плагин jQuery Outside Events

Позволяет вам сделать:

$field_hint.bind('clickoutside',function(){
    $field_hint.dialog('close');
});
30
ответ дан 24 November 2019 в 02:56
поделиться
$(".ui-widget-overlay").click (function () {
    $("#dialog-id").dialog( "close" );
});

Fiddle, демонстрирующий вышеприведенный код в действии.

10
ответ дан 24 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: