我的页面中有一个锚标记用于注销。
<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");
}
答案 0 :(得分:0)
在触发“是”时调用的匿名函数中,您希望执行以下操作而不是仅返回true:
$('selector').attr('href');
)window.location.href
发送到您在第1点抓取的网址如果您希望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;
},