1

私は空のhrefs(href = "#")を使用しており、jQueryクリックイベントがコントローラーからデータを取得して部分ビューで表示できるようにしています。

ただし、戻るボタンを使用できるように、jQueryアドレスプラグインを実装したいと思います。私の知る限り、空のhrefの使用をやめる必要があります。(空のhrefを使用することも悪い習慣だと思います。)

私の新しいリンクは次のようになります。

<a href="/Stop/Details/<%: item.StopID %>">
    <div class="stopId"><%: item.StopID %></div>
</a>

しかし、jQueryクリックイベントがそれをキャプチャする代わりに、すぐに/ Stop / Detailsにリダイレクトされます。これは、部分的なビューであるため、私が望むものではありません。どうすればこれを修正できますか?

編集:私のタイトルが質問に対して正確ではないことに気づきました。申し訳ありません。より正確なタイトルを考えて変更しようとします。

二重編集:divをリンクにネストしてはならないことにも気づきました。

私のクリックイベントは実際にはライブクリックです。これは次のようになります。

$(function () {
$(".stopId").live('click', function () {
    var stopId = $(this).html()

        $.post('<%= Url.Action("Details") %>',
    { id: stopd },
    handleSuccess
        );
});
});
4

2 に答える 2

2

アンカーのクリック機能でデフォルトのアクションが発生しないようにする必要があります。これにより、ブラウザがリンクをクリックしたときにリンクをたどることができなくなります。jQueryクリックコードを投稿していませんが、次のようになっているはずです。

$('a').click(function(e) { //Edit note the e
    //Your code here
    e.preventDefault(); //This stops the browser from following the link
});

編集
実際には、jQueryアドレスプラグインのドキュメントを見た後、リンクを次のようにしたいと思います: <a href="#/Stop/Details/<%: item.StopID %>">(#に注意してください)。これで問題も解決する可能性があります。

于 2011-04-06T18:20:24.910 に答える
2

return falsejQueryクリックハンドラーが表示されていないのでわかりませんが、またはevent.preventDefault:を使用することを覚えていますか?

$('a').click(
    function(){
        // other stuff
        return false;
    });

または:

$('a').click(
    function(e){
        e.preventDefault;
        // other stuff
    });

参照:

于 2011-04-06T18:21:17.343 に答える