jQuery UI удаляет функцию подтверждения обратного вызова

#jquery-ui #confirmation

#jquery-пользовательский интерфейс #подтверждение

Вопрос:

Я хотел бы использовать пользовательский интерфейс jQuery для реализации подтверждения удаления. Я хочу использовать ссылку для запуска диалогового окна. Вот мой код:

 <a href="http://www.google.com" class="delete">delete</a>

<script type="text/javascript">
        $(function(){

            $( "#dialog-confirm" ).dialog({
                resizable: false,
                height:140,
                modal: true,
                autoOpen: false,
                buttons: {
                    "Okay": function() {
                        $( this ).dialog( "close" );
                        return true;
                    },
                    Cancel: function() {
                        $( this ).dialog( "close" );
                        return false;
                    }
                }
            });

            $( ".delete" ).click(function() {
                $( "#dialog-confirm" ).dialog( "open" );
                return false;
            });

        });
    </script>
  

Что я хочу сделать, так это то, что когда пользователь нажимает «Отмена», это ничего не делает. Но когда пользователь нажимает «Ок», тогда он продолжит переходить к www.google.com .

Однако, независимо от того, нажимаю «ок» или «Отмена», по-прежнему ничего не происходит. Есть идеи?

Ответ №1:

Даже если вы сделаете это:

 $("a.delete").trigger("click");
  

Вы все равно не попадете в Google, потому что после вызова обработчиков jQuery запускает событие для объекта. Он вызывает собственные обработчики только для событий нажатия, если элемент не является ссылкой.

Вы могли бы сделать что-то вроде этого:

 window.location.href = $("a.delete").attr("href");
  

Или у вас может быть скрытая ссылка на странице, например, такая:

 <a href="http://www.google.com" class="hiddenDelete" style="display:none">delete</a>
  

Затем, нажав на кнопку «Открыть», вы могли бы сделать это:

 $("a.hiddenDelete").trigger("click");