这是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种不同的方法来防止链接重定向页面,但是它们似乎都没有按我所希望的那样做。我做错了什么?
答案 0 :(得分:2)
你正在使用.live
而不理解它是如何做到的。
将.live
更改为.bind
,它会有效。
另外 - 阅读.live
以了解.live
绑定到文档的知识,并在事件冒出时捕获事件,因此防止默认操作或任何事情为时已晚。
顺便说一句 - 如果你把一些代码放在一个返回语句之后,就会有一种可能性让某人感到困惑,认为它实际上是出于一些奇怪的原因而运行。
[编辑]
如果你希望它在没有javascript(渐进增强和东西)的情况下工作,那么你应该使用服务器端生成的对话框,以便即使没有javascript就可以提问。
如果您不关心渐进式增强功能并希望它仅适用于高端浏览器,那么为什么还要使用href?
将href
重命名为data-href
并在用户确认后加载它。你不必阻止任何事情。