Czy istnieje domyślna opcja zamknięcia okna dialogowego jQuery, klikając gdzieś na ekranie zamiast ikony zamknięcia?Zamknij okno dialogowe kliknięcia (w dowolnym miejscu)
Odpowiedz
Podczas tworzenia okna dialogowego JQuery JQuery wstawia klasę nakładki interfejsu użytkownika. Jeśli powiążesz funkcję klikania z tą klasą, aby zamknąć okno dialogowe, powinna ona zapewnić pożądaną funkcjonalność.
kod będzie coś takiego (niesprawdzone):
$('.ui-widget-overlay').click(function() { $("#dialog").dialog("close"); });
Edit: został przetestowany pod kątem Kendo oraz następujące:
$('.k-overlay').click(function() {
var popup = $("#dialogId").data("kendoWindow");
if (popup)
popup.close();
});
Warto dodać, należy dodać "ciało" do deklaracji zdarzenia kliknięcia nakładki, tak jakby nakładka nie istniała podczas tworzenia zdarzenia, nie zostanie zastosowana. $ ("body"). On ("kliknij", ".ui-widget-overlay", function() {$ ("# dialog"). Dialog ("zamknij");}); – Matt
Ten post może pomóc:
http://www.jensbits.com/2010/06/16/jquery-modal-dialog-close-on-overlay-click/
Zobacz także How to close a jQuery UI modal dialog by clicking outside the area covered by the box?, aby dowiedzieć się, kiedy i jak zastosować overlay
kliknięcie lub wydarzenie na żywo w zależności od tego, w jaki sposób korzystasz z okna dialogowego na stronie.
Edycja: Oto plugin I autorami że rozszerza UI Dialog jQuery to zamykanie po kliknięciu na zewnątrz oraz inne funkcje: https://github.com/jasonday/jQuery-UI-Dialog-extended
Oto 3 sposoby, aby zamknąć okno dialogowe jQuery UI po kliknięciu poza Popin:
Jeśli okno jest modalne/posiada tła nakładki: 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');
})
}
});
});
Jeżeli dialog jest blokami Metoda 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');
}
});
blokami dialogowe Metoda 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;
}
});
W niektórych przypadkach odpowiedź Jasona jest przesadą. I $('.ui-widget-overlay').click(function(){ $("#dialog").dialog("close"); });
nie zawsze działa z treścią dynamiczną.
Rozwiązanie że znajdę prace we wszystkich przypadkach jest:
$('body').on('click','.ui-widget-overlay',function(){ $('#dialog').dialog('close'); });
w jakich scenariuszach moje rozwiązania nie działają? (z ciekawości), ponieważ większość mojego rozwoju dotyczy treści dynamicznych - moje nakładki i metody bez nakładek działały za każdym razem. – Jason
po użyciu xajax do aktualizacji DOM, na przykład. – neokio
Nie znalazłem tego problemu, ale powyższe jest bardziej komentarzem niż odpowiedzią - dodatkowo ".on" jest bardziej aktualne i delegowanie może być bezpieczniejszą opcją. – Jason
Jeśli masz kilka okien dialogowych, które mogą być otwierane na stronie, pozwoli to któryś z nich zostanie zamknięta poprzez kliknięcie na tle:
$('body').on('click','.ui-widget-overlay', function() {
$('.ui-dialog').filter(function() {
return $(this).css("display") === "block";
}).find('.ui-dialog-content').dialog('close');
});
(działa tylko dla modalnych okien dialogowych, gdyż opiera się na „.ui-widget-overlay”. I to nie zamyka wszystkie otwarte okna dialogowe dowolnym momencie w tle jednego z nich jest kliknięty.)
Jeśli chcesz zrobić to dla wszystkich okien dialogowych w całej witrynie, wypróbuj poniższy kod ...
$.extend($.ui.dialog.prototype.options, {
open: function() {
var dialog = this;
$('.ui-widget-overlay').bind('click', function() {
$(dialog).dialog('close');
});
}
});
obliczu tego samego problemu, mam stworzył małą wtyczkę, która pozwala, aby zamknąć okno dialogowe po kliknięciu poza nim czy nią dialog modalny lub blokami. Obsługuje jedno lub wiele okien dialogowych na tej samej stronie.
Więcej informacji na mojej stronie internetowej tutaj: http://www.coheractio.com/blog/closing-jquery-ui-dialog-widget-when-clicking-outside
Laurent
Spróbuj tego:
$(".ui-widget-overlay").click(function() {
$(".ui-icon.ui-icon-closethick").trigger("click");
});
Witaj w SO i dziękuję za odpowiedź. Sprawdzam twoją odpowiedź, ponieważ została oznaczona do oceny jakości ze względu na jej zwięzłość. W takim przypadku twoja odpowiedź wydaje się być przydatna i może poprawna, więc jej nie usunę. Jednak byłoby naprawdę pomocne, gdybyś mógł dodać trochę tekstu, wyjaśniając, co robi, jak działa i jak rozwiązuje problem PO. Dzięki. –
Jeżeli kod z poprzednich postów nie działa, spróbuj tego:
$("a.ui-dialog-titlebar-close")[0].click();
Trochę za późno, ale to rozwiązanie sprawdziło się u mnie. Idealne, jeśli twój modal znajduje się w tagu nakładki. Modal zostanie zamknięty po kliknięciu w dowolne miejsce poza treścią modalną.
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();
}
});
Oto working example
- 1. Zamknij okno dialogowe interfejsu jQuery z elementu wewnątrz niego?
- 2. Wyszukiwanie w dowolnym miejscu treści zamiast uruchamiania
- 3. Pierwsze lokalizatora usług w dowolnym miejscu ZF2
- 4. Przycisk HTML Zamknij okno
- 5. jQuery dialogowe 'Zamknij' konflikt z ASP.NET UpdatePanel
- 6. Obsługa zdarzenia myszy w dowolnym miejscu z JavaFX
- 7. Okno dialogowe jQuery UI: jak zamknąć okno dialogowe po kliknięciu na zewnątrz?
- 8. Otwórz nowe okno dialogowe w qt
- 9. Android: Okno dialogowe/okno dialogowe operacji niespodziewanie znika
- 10. zamknij okno fxml kodem, JavaFX
- 11. Wykryj okno przesyłania Zamknij jquery
- 12. Potwierdź okno dialogowe w angularjs
- 13. Niestandardowe okno dialogowe w C#?
- 14. Wyszukaj okno dialogowe folderu
- 15. Okno dialogowe otwierania pliku
- 16. Okno dialogowe debugowania XCode
- 17. Android niestandardowe okno dialogowe
- 18. Animować niestandardowe okno dialogowe
- 19. Pobierz okno dialogowe pliku
- 20. Czasowe okno dialogowe niemodalne
- 21. okno dialogowe blendera wejściowego
- 22. Typ/okno dialogowe WPF?
- 23. Okno dialogowe Primefaces + commandButton
- 24. Okno dialogowe potwierdzenia GWT
- 25. Okno dialogowe alertu WP7
- 26. Okno dialogowe logowania PyQt
- 27. Kliknij poza niemodalne okno dialogowe, aby zamknąć
- 28. Czy widzisz wartości NSUserDefaults w dowolnym miejscu w debugerze xcode?
- 29. Umożliwia zaznaczanie kursora w dowolnym miejscu w UITextView
- 30. Okno dialogowe/wyskakujące okno z obrazem Androida
Ten post może pomóc http://stackoverflow.com/questions/8384067/how -do-zamknięcia-z-dialog-z-kliknięciem-na-poza-dialogowym –