【发布时间】:2012-03-19 20:36:08
【问题描述】:
我想在超链接的点击事件上有条件地显示一个 JQuery 对话框。
我有一个要求,例如在条件 1 上打开一个 JQuery 对话框,如果条件 1 不满足,请导航到其点击事件的“href”标签所引用的页面。
我可以在链接的点击事件上调用一个函数。这个函数现在通过执行另一个 URL(执行我的 Spring 控制器并返回响应)来检查上述条件。
只有 window.open 被弹出窗口阻止程序阻止,所有工作都完美。
$('a[href*=/viewpage?number]').live('click', function(e) {
e.preventDefault();
redirectionURL = this.href;
pageId= getUrlVars(redirectionURL)["number"];
$.getJSON("redirect/" + pageId, {}, function(status) {
if (status == null) {
alert("Error in verifying the status.");
} else if(!status) {
$("#agreement").dialog("open");
} else {
window.open(redirectionURL);
}
});
});
如果我从代码中删除 e.preventDefault();,弹出窗口阻止程序不会阻止页面,但是对于条件 1,它会打开对话框并打开“href”页面。
如果我解决了一个问题,就会给另一个问题带来麻烦。我无法同时对这两种情况作出公正的评价。
你能帮我解决这个问题吗?
一旦解决了这个问题,我还有另一个问题需要解决,即对话 OK 事件的导航 :)
【问题讨论】:
-
尽量不要使用已弃用的 .live 和指向 .on() 的指针!
-
@EvilP:就像其他人上次对你说的那样,仅在 1.7 及更高版本中。 很多项目仍将在 1.5 或 1.6 上。
-
Downvoter:仅仅因为你不喜欢弹出窗口,这并不意味着这个问题应该被否决。如果一个问题“......没有显示出任何研究成果;如果不清楚或没有用”,则该问题应被否决。这个问题很清楚,看起来并不懒惰,并且源于一个不平凡的因素组合。
-
@T.J.Crowder:他没有具体说明他使用的是哪个版本。所以我应该考虑他正在使用最新版本。如果他使用的是不同的版本,我相信他会提到这一点,因为这样他就会意识到 live 已被弃用,并会解释他为什么使用 .live()。没有人告诉我“最后一次”的时间,所以我觉得你应该让自己休息一下,冷静下来。没必要这么苛刻……
-
没有收到任何通知。但是,如果有人没有指定他们的版本来考虑他们使用的是最新的,这难道不是正常的吗?我的意思是我必须使用 1.3 是有原因的,而且我知道有一个更新更好的版本。
标签: jquery window.open jquery-callback popup-blocker