0

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 つの異なる方法を試したことがわかりますが、どれも私が望んでいたことをしているようには見えません。私は何を間違っていますか?

4

1 に答える 1

2

あなたは.liveそれが魔法をどのように行うかを理解せずに使用しています。

に変更.liveする.bindと動作します。

.liveまた、ドキュメントにバインドし、イベントが発生したときにイベントをキャッチする知識を得るために読んでください.live。そのため、デフォルトのアクションなどを防ぐには遅すぎます。

ところで、return ステートメントの後にコードを配置すると、何らかの奇妙な理由で実際に実行されていると誰かが混乱する可能性がわずかにあります。

[編集]

JavaScript(プログレッシブエンハンスメントなど)なしで動作させたい場合は、JavaScriptがなくても質問をする目的で、サーバー側で生成されたダイアログを使用する必要があります。

プログレッシブ エンハンスメントを気にせず、ハイエンド ブラウザーでのみ動作させたい場合は、なぜわざわざ href を使用するのでしょうか? ユーザーが確認した場合、に名前を変更hrefしてロードします。data-href何も防ぐ必要はありません。

于 2011-05-30T08:22:11.227 に答える