Событие привязки диалога JQuery к кнопке - PullRequest
1 голос
/ 05 декабря 2011

У меня проблемы с jQuery.Я хочу, чтобы диалоговое окно появлялось, когда пользователь щелкает ссылку, чтобы удалить что-то, и предлагает им убедиться, что они действительно хотят удалить это.Диалоговое окно выглядит нормально, однако я не вижу способа получить URL ссылки, когда пользователь нажимает кнопку «Да».Я попытался использовать свойство event.relatedTarget, чтобы получить URL-адрес тега, но он нулевой.Кто-нибудь знает, как это сделать?

Код

<div id="dialog" title="Delete Run">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 0 0;"></span>Are you sure you want to delete that run?</p>
</div>
$(document).ready(function() {
    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        modal: true,
        draggable: false,
        resizable: false,
        buttons: {
            "Yes": function(event) {
                //Go to the url in $("a.delete")
            },
            "No": function() {
                $(this).dialog("close");
            }
        }
    });

    $("a.delete").click(function(){
        var url = $(this).attr("href");
        $('#dialog').dialog('open');
        return false;
    });
});

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011
<div id="dialog" title="Delete Run">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 0 0;"></span>Are you sure you want to delete that run?</p>
</div>
$(document).ready(function() {
    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        modal: true,
        draggable: false,
        resizable: false,
        buttons: {
            "Yes": function(event) {
                var url = $(this).data('url');
                window.location = url;
            },
            "No": function() {
                $(this).dialog("close");
            }
        }
    });

    $("a.delete").click(function(){
        $('#dialog').data('url', $(this).attr("href"));
        $('#dialog').dialog('open');
        return false;
    });
});

Немного догадок, так как в вашем коде нет элемента a.delete?Использование данных jQuery () обычно лучше, чем глобальные переменные.

1 голос
/ 05 декабря 2011

Вы можете объявить url var в начале документа, готового для доступа к этой переменной в любой из ваших функций.Итак, сначала выполните var url; after (document) .ready, затем удалите объявление var из функции click для удаления и, наконец, установите для местоположения окна эту переменную следующим образом: window.location.href = url; В конце вы получите что-то вроде этого:

$(document).ready(function() {
    var url;

    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        modal: true,
        draggable: false,
        resizable: false,
        buttons: {
            "Yes": function(event) {
                window.location.href = url;
            },
            "No": function() {
                $(this).dialog("close");
            }
        }
    });

    $("a.delete").click(function(){
        url = $(this).attr("href");
        $('#dialog').dialog('open');
        return false;
    });
});

Я настроил пример с вашим кодом здесь: http://jsfiddle.net/dGETj/

...