在回调函数中调用href
Posted
技术标签:
【中文标题】在回调函数中调用href【英文标题】:Calling href in Callback function 【发布时间】:2013-02-05 07:33:57 【问题描述】:我的页面中有一个用于注销的锚标记。
<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");
【问题讨论】:
这似乎与我的答案非常接近!如果你使用“href”,你甚至不需要先关闭对话。 嘿@Murali - 这里没有答案有什么原因吗? :) 【参考方案1】:在触发“是”时调用的匿名函数中,您希望执行以下操作而不是仅返回 true:
-
获取 href(您可以使用
$('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
, ...
注意:感谢以下 cmets 中的 Anthony:使用 window.location.href = ...
而不是 window.location.href()
,因为它不是函数!
【讨论】:
window.location.href
是字符串属性,而不是函数。应该是window.location.href = href;
,而不是window.location.href(href);
。
还会在帖子里加上安东尼的解释。【参考方案2】:
我在很多项目中都使用过这个,所以我建议window.location.href
'Yes': function ()
$(this).dialog('close');
window.location.href="your url"
return true;
,
【讨论】:
以上是关于在回调函数中调用href的主要内容,如果未能解决你的问题,请参考以下文章