问题描述
|
这是jquerymobile应用程序的摘录。这是一个简单的文件管理器,允许删除文件,我想确认删除。我正在尝试使用JavaScript确认再次检查是否应继续执行操作;但似乎无论我做什么,我都无法阻止它的发生。
<script type=\"text/javascript\">
$(document).ready(function(){
$(\".confirm\").live(\"click\",function(ev){
var nam = $(this).html(),loc = $(this).attr(\'href\'),answer = confirm(\"Are you sure you want to delete:\\n\\n\" + nam);
if (answer){
return true;
//window.location.href = loc;
}else{
ev.preventDefault();
return false;
window.location.href = window.location.href;
}
});
});
</script>
...
<div data-role=\"page\" data-theme=\"a\">
<div data-role=\"content\">
<ul data-role=\"listview\" data-inset=\"true\">
...
<li><a class=\"confirm\" href=\"?delete=#urlEncodedFormat(f.name)#\">#f.name#</a></li>
</ul>
</div>
</div>
您可以看到我尝试了3种不同的方法来防止链接重定向页面,但是似乎没有一种方法可以达到我的期望。我究竟做错了什么?
解决方法
您正在使用
.live
,但又不了解它的作用方式。
将.live
更改为.bind
,它将起作用。
另外-阅读有关ѭ1的知识,以了解.live
绑定到文档并在事件冒泡时捕获事件,因此为防止默认操作或任何其他行为为时已晚。
顺便说一句-如果将代码放在return语句之后,则可能会有些混淆,认为有人出于某种奇怪的原因实际上正在运行它。
[编辑]
如果您希望它在没有javascript(渐进式增强和功能)的情况下工作,则应使用服务器端生成的对话框来询问问题,即使没有javascript也是如此。
如果您不关心渐进增强,而只希望它在高端浏览器中工作,那么为什么还要麻烦href呢?
如果用户确认,将href
重命名为data-href
并加载。您无需采取任何措施。