在Callback函数中调用href

时间:2013-02-20 10:25:13

标签: javascript jquery jquery-ui jquery-callback

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

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

这里我展示了一个用jQuery UI对话框确认的Popup。

如果用户在对话框中单击是,则必须执行链接按钮的默认操作,我的意思是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");
                    }

2 个答案:

答案 0 :(得分:0)

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

  1. 抓住href(您可以使用$('selector').attr('href');
  2. 轻松获取此信息
  3. 将您的window.location.href发送到您在第1点抓取的网址
  4. 如果您希望a标记只是执行此操作,请删除所有preventDefault()stopPropagation()。在这里,我提供了两种不同的方式:)

    不要使用document.location,而是使用window.location.href。你可以看到为什么here

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

    '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(),因为不是一个函数!

答案 1 :(得分:0)

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

'Yes': function () {
                        $(this).dialog('close');
                         window.location.href="your url"    
                        return true;
                    },