Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Модальное окно (https://javascript.ru/forum/dom-window/69187-modalnoe-okno.html)

Scantraxx 04.06.2017 15:52

Модальное окно
 
У меня есть скрипт, который открывает модальное окно, когда я нажимаю на кнопку "Купить":
<script>
    $(document).ready(function(){
        
        $.ajaxSetup({cache:false});

        $(".viewDialog").on("click", function(e){
            e.preventDefault();

            $("<div></div>")
            .addClass("dialog")
            .appendTo("body")
            .dialog({
                title: $(this).attr("data-dialog-title"),
                close: function() {$(this).remove() },
                modal: true
            })
            .load(this.href);
        });
    });
</script>


Как мне его модифицировать, чтобы при открытом модальном окне, если я нажму куда-то в сторону от него - окно закрылось. И еще, если при открытом окне я попытаюсь открыть новое, текущее надо закрыть.
Я очень плохо разбираюсь в js, по этому примеры которые находил, не смог подстроить под свой код.

рони 04.06.2017 16:09

Цитата:

Сообщение от Scantraxx
И еще, если при открытом окне я попытаюсь открыть новое, текущее надо закрыть.

$(".viewDialog").on("click", function(e){
            e.preventDefault();
            $(".dialog").dialog("close");

            $("<div></div>")

рони 04.06.2017 16:19

dialog close jquery-ui
 
Scantraxx,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script>
$(function() {
     $.ajaxSetup({cache:false});

        $(".viewDialog").on("click", function(e){
            e.preventDefault();
            e.stopPropagation();
            $("<div></div>")
            .addClass("dialog")
            .appendTo("body")
            .dialog({
                title: $(this).attr("data-dialog-title"),
                close: function() {$(this).remove() },
                modal: false
            })
           // .load(this.href);
        });
  $(document).on("click", function(e) {
  $(e.target).closest(".ui-dialog").length || $(".dialog").dialog("close");
})
});
  </script>
</head>

<body>
  <a href="" class="viewDialog" data-dialog-title="1">1</a>
  <a href="" class="viewDialog" data-dialog-title="2">2</a>
  <a href="" class="viewDialog" data-dialog-title="3">3</a>
  <a href="" class="viewDialog" data-dialog-title="4">4</a>
  <a href="" class="viewDialog" data-dialog-title="5">5</a>
</body>
</html>

Scantraxx 04.06.2017 16:58

рони,
Спасибо большое! Очень выручили

Scantraxx 04.06.2017 17:14

рони,
только у меня почему-то не работает закрытие окна, при открытии нового. с чем это может быть связано? Ссылки подключил ваши, чтобы уж точно все нормально было

рони 04.06.2017 18:40

Scantraxx,
нужен код, может строку 18 не добавили?

Scantraxx 04.06.2017 19:11

рони,
я полностью скопипастил ваш скрипт, так что строка есть, в консоле браузера ошибок никаких тоже нету. У вас все работает, это я вижу, но совсем не понимаю почему у меня нет.

рони 04.06.2017 19:17

Scantraxx,
нет кода нет совета


Часовой пояс GMT +3, время: 03:24.