1

私はjqmにかなり慣れていないので、約20の異なることを試しましたが、これで数時間経ちました。作業に取り掛かることができる最高のものは次のコードです。

$(function() {
$('.load_more').live("click",function() {
//my ajax call here

success: function(htmldat){
    $("#more").remove();
       $("#updates").append(htmldat).listview('refresh');
       $("#more").trigger('create');

}
});
}
return false;
});
});

私のページでは、データベースから 10 レコードをリスト ビューにロードします。次の 10 レコードをリスト ビューに追加するボタン (.load_more) があります。ページから離れて戻ってきてボタンをクリックするとすぐに、ボタンが 2 回起動します。私は非常に多くの提案を行ってきましたが、1つを機能させることができません。どんな助けでも大歓迎です。

また、使用しているページの終了タグの前にロードしているコード。

編集

次のコードは機能しているように見えますが、アラートを関数に置き換えても機能せず、イベントはトリガーされません。

$(document).delegate("#clickers", "pageinit", function () {
  $(".load_more").off('click').on('click', function () {
    alert("hello");
  });
});

ボタンをクリックすると、データが取得されてリストビューに追加されます。ボタンを再作成すると、イベントが強制終了される可能性がありますか?

$("#more").remove();
$("#updates").append(htmldat).listview('refresh');
$("#more").trigger('create');
4

1 に答える 1

2

あなたの編集を読むと、問題が間違いなくボタンの再作成にあることは明らかです. イベント ハンドラーは、ハンドラーの作成時に存在する DOM 要素にバインドされます。それらは、同じ ID を持つ以降のすべての要素に一括適用されるわけではありません。簡単な解決策は、各作成時にハンドラーをバインドすることです。

var recreateButton = function() { 
    $("#more").remove();
    $("#updates").append(htmldat).listview('refresh');
    $("#more").trigger('create');
    $("#more").off('click').on('click', function(){});
}

または、ボタン要素で onClick イベントを使用して、クリックされるたびに関数を呼び出すこともできます。

于 2012-08-31T04:16:19.527 に答える