0

これに対する解決策を見つけられることを願っています。ここに行きます:

データベースにメッセージを追加するためにフォームを送信した後<div>、load メソッドを使用して を作成します。その後、コールバック関数でいくつかのことを行います。

new を作成する関数<div>が終了すると、最後に挿入された の前にメッセージを追加する呼び出し関数に戻ります<div>

ここから問題が始まります。

セレクターを使用して を見つけ$(someDiv : last)ましたが、間違った場所に配置されました<div>。したがって、非同期プロセスと関係があることはわかっています。

今はコールバック関数から作業していないため、これを修正するために何ができるかを実際には考えていません。

実際の例を見たい場合ソースコードは警告の形でデバッグ コードで雑然としていますが、それが何をしているかを見ることができます。

4

3 に答える 3

1

Ajax 呼び出しは非同期です。ロードされたデータを選択するには、コールバック関数を使用する必要があります。次に例を示します。

$('div').load(url, data, function(data, status) {
   $(someDiv:last).dosomething();
} 
于 2009-05-08T22:44:52.340 に答える
0

おそらく、新しい div が挿入されていると思われる場所に挿入されていません。$(someDiv : last) は、新しい div が someDiv にないか、最後にないため、間違った結果を返しています。これは、Firebug がデバッグを容易にするようなものに思えます。

「最後の」メタクラスを使用して div を選択するよりも、新しい div に ID を与えて直接参照する方が良いでしょう。または、作成時にクラスを指定し、クラスを使用して $(".newdiv") を選択し、完了したらクラスをクリアします。または、新しい div を呼び出し元の関数に返すだけで、セレクターをまったく使用する必要がなくなります。申し訳ありませんが、あなたの状況を完全には理解できませんでしたが、これらの解決策の少なくとも 1 つがうまくいくと思います。

于 2009-05-08T22:07:57.810 に答える
0

最初に値が最初の項目に追加され、その後は前の最後の項目に追加されることに気付きましたか? それが手がかりになるかもしれません。ああ、メッセージを 10 回追加するループにはまってしまいました。コードにタイミングの問題があるようです。

編集: 基本に戻すと、次のようになります: http://kruisit.nl/so/841982/ お 役に立てば幸いです。

于 2009-05-08T22:37:45.320 に答える