-2

現在、MVC4 Webアプリケーションを作成中ですが、奇妙な問題が発生したようです。いくつかのリストアイテムを含む順序付けられていないリストと、クリックできるようになるそれぞれのアンカータグを作成しました。これにより、それぞれの/ CONTROLLER/ACTIONビューが返されます。

    <div>
        <ul>
            <li>
                <a class="ajax" href="/Test/One"></a>
            </li>
            <li>
                <a class="ajax" href="/Test/Two"></a>
            </li>
            <li>
                <a class="ajax" href="/Test/Three"></a>
            </li>
            <li>
                <a class="ajax" href="/Test/Four"></a>
            </li>
        </ul>
   </div>

   <div id="body">
   </div>

次に、いずれかのアンカータグをクリックして「ajax」のクラスを探したときに呼び出すjQueryを作成しました。アンカータグをクリックすると、GetContentという別の関数が実行され、HREF値が渡されます。 ajax呼び出しのパスとして使用されるアンカータグの。

$(document).ready(function () {
    $(".ajax").click(function () {
        var path = $(this).attr("href");
        GetContent(path);
    });
});

function GetContent(path) {

    $.ajax({
        url: path,
        type: 'POST',
        async: false,
        success: function (result) {
            $("#body").html(result);
        }
    });
}

私はあなたが呼び出すことができるpreventDefaultと呼ばれる関数について聞いたことがあります。アンカータグのクリックをオーバーライドするために、このpreventDefaultをいつ呼び出すかわからないことがわかりました。

いくつかの場所に配置してみましたが、運が悪かったのですが...アンカータグのいずれかをクリックできるようになりました。デフォルトのアクションが発生すると、Webサイト全体が新しいもので返されます。ビューがロードされました。ただし、Google Chrome開発者ツールでコンソールを開き、期待するパスを通過して関数GetContentを呼び出すと、関数が呼び出され、ajaxが返され、Webページが更新されます。

誰かがpreventDefault関数を呼び出すことになっている場所を誰かが指摘できれば、それは素晴らしいことです。

4

1 に答える 1

3

preventDefaulteventオブジェクトのメソッドです。eventクリックイベントハンドラーの最初のパラメーターとしてオブジェクト への参照を取得します…</p>

$(".ajax").click(function (event) {
    var path = $(this).attr("href");
    GetContent(path);
    event.preventDefault();
});
于 2013-01-20T09:42:53.737 に答える