0

我的页面中有一个用于注销的锚标记。

<a href="/logout/" id="lnk-log-out" />

在这里,我显示了一个弹出窗口,用于使用 jQuery UI 对话框进行确认。

如果用户从对话框中单击是,它必须执行链接按钮的默认操作,我的意思是 href="/logout"。

如果没有点击一个弹出框应该消失。

jQuery 代码

 $('#lnk-log-out').click(function (event) {
            event.preventDefault();
            var logOffDialog = $('#user-info-msg-dialog');

            logOffDialog.html("Are you sure, do you want to Logout?");
            logOffDialog.dialog({
                title: "Confirm Logout",
                height: 150,
                width: 500,
                bgiframe: true,
                modal: true,
                buttons: {
                    'Yes': function () {
                        $(this).dialog('close');
                        return true;
                    },
                    'No': function () {
                        $(this).dialog('close');
                        return false;
                    }
                }
            });

        });
    });

问题是当用户单击“是”时,我无法触发锚点的 href。

我们应该怎么做?

编辑:现在我以这种方式管理

'Yes': function () {
                        $(this).dialog('close');
                        window.location.href = $('#lnk-log-out').attr("href");
                    }
4

2 回答 2

0

在触发“是”时调用的匿名函数中,您希望执行以下操作而不是仅返回 true:

  1. 抓住href(你可以很容易地使用这个$('selector').attr('href');
  2. 执行您window.location.href在第 1 点获取的网址

如果您希望a标签只是做它的事情,请删除任何preventDefault()stopPropagation(). 在这里,我提供了两种不同的方式:)

使用document.locationwindow.location.href改为使用。你可以在这里看到为什么。

您在“是”调用中的代码应该看起来像,当然插入了您的代码:

'Yes': function () {
            // Get url
            var href = $('#lnk-log-out').attr('href');
            // Go to url
            window.location.href = href;
            return true; // Not needed
     }, ...

注意:感谢 Anthony 在下面的评论中:使用window.location.href = ...代替window.location.href(),因为它不是函数!

于 2013-02-20T10:30:01.100 回答
0

我在我的许多项目中都使用过这个,所以我建议window.location.href

'Yes': function () {
                        $(this).dialog('close');
                         window.location.href="your url"    
                        return true;
                    },
于 2013-02-20T10:32:31.670 回答