jquerymobile确认似乎没有影响结果?

时间:2011-05-30 05:12:50

标签: javascript jquery-mobile confirm preventdefault

这是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种不同的方法来防止链接重定向页面,但是它们似乎都没有按我所希望的那样做。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你正在使用.live而不理解它是如何做到的。

.live更改为.bind,它会有效。

另外 - 阅读.live以了解.live绑定到文档的知识,并在事件冒出时捕获事件,因此防止默认操作或任何事情为时已晚。

顺便说一句 - 如果你把一些代码放在一个返回语句之后,就会有一种可能性让某人感到困惑,认为它实际上是出于一些奇怪的原因而运行。

[编辑]

如果你希望它在没有javascript(渐进增强和东西)的情况下工作,那么你应该使用服务器端生成的对话框,以便即使没有javascript就可以提问。

如果您不关心渐进式增强功能并希望它仅适用于高端浏览器,那么为什么还要使用href? 将href重命名为data-href并在用户确认后加载它。你不必阻止任何事情。