0

だから、私はそのような問題を抱えています.1回目は、<a>クリックされたことe.preventDefault()が機能せず、ページの上部にジャンプしますが、2回目は機能します。何が問題ですか?

$('#more a').live('click', function(e) {
    var last = $('p.post').last().data('id');
    console.log('start');
    if (last != '1') {
        $.ajax({
            type: "POST",
            url: "http://live.iappleworld.ru/ajax_more_mobile.php",
            data: "last=" + last,
            beforeSend: function() {
                $('#more a').text('').prepend('<img src="http://live.iappleworld.ru/ajax-loader.gif" alt="loading"/> Loading...');
            },
            success: function(html) {
                $("#more").remove();
                $(html).hide().appendTo('ul.pageitem').slideDown(600);
            }
        });
    }
    e.preventDefault();
});

前後に別のスクリプトがあります。

4

3 に答える 3

4
$('#more').on('click','a', function(e) {
  e.preventDefault(); // at the beginning stop page reload

  // your code

});

.on()

.on()デリゲート イベント処理の構文:

$(container).on(eventName, target, handlerFunction)

container要素が属する場所はどこStatic elementにありtarget、もちろんコンテナーはページの読み込み時に DOM に属している必要があります。つまり、動的であってはなりません。

続きを読む.on()


ノート

デリゲートイベントを使用してバインドする.live()選択肢がある場合は、避けるようにしてください。jQuery >= 1.7.on()


コメントによると

あなたが書いた

$('#more').live('click','a',function(e) {...});

しかし、そうあるべきです

$('#more').on('click','a',function(e) {...});

別のオプションは、aタグhrefを次のように変更することです

<a href="javascript:void(0)"></a>

と削除しe.preventDefault()ます。

于 2012-06-27T16:39:00.050 に答える
0

.liveメソッドを使用する代わりに、を使用しますdelegate。あなたのhtml構造についてはよくわかりませんが、これはうまくいくと思います。

$('#more').delegate('a','click', function(e) {
  var last = $('p.post').last().data('id');
  console.log('start');
  if (last != '1') {
    $.ajax({
        type: "POST",
        url: "http://live.iappleworld.ru/ajax_more_mobile.php",
        data: "last=" + last,
        beforeSend: function() {
            $('#more a').text('').prepend('<img src="http://live.iappleworld.ru/ajax-loader.gif" alt="loading"/> Loading...');
        },
        success: function(html) {
            $("#more").remove();
            $(html).hide().appendTo('ul.pageitem').slideDown(600);
        }
    });
  }
  e.preventDefault();
});
于 2012-06-27T17:26:39.943 に答える
0

ページに最初にアクセスしたときに、JavaScript ファイルが読み込まれていないようです。次に、リンクをクリックすると、「通常どおり」たどられます。これにより、ページが更新され、javascript が読み込まれ、期待どおりにクリック イベントがインターセプトされます。

影響を受けていない (影響を受けていない) リンクがある領域は、ajax を介してロードされていますか?

于 2012-07-26T14:13:46.007 に答える