0

確かに、ここにはたくさんの言葉がありますが、これは私が今まで見たことがない問題であり、それは非常に独特な問題です。だから、それはおそらく読む価値があるでしょう。

$.mobile.autocompleteからクリックされたリンクに応答してリストビューを動的に生成するページがあります。
リストビューには2つのタイプがあり<li>'s、それに応じてテーマが設定され、クラスが設定されているかどうかに応じて設定されます。
それらをl-1とl-2と呼びましょう。

l-1をクリックすると、そのlistitemは、$。ui.selectedのように、選択されているアイテムの外観を与えるクラスを切り替え、リストごとに1つの選択されたアイテムのみが許可されます。
これは、基本的なjQueryを使用して簡単に実行できます。

l-1をクリックすると、ajax呼び出しが行われ、サーバーに特定の値が送信されます。コールバック関数は、成功した場合はフッターテキストを緑色で強調表示し、エラーが発生した場合は赤色で強調表示します。

l-2をクリックすると、リストがこの特定の階層の1つ下のレベルにある別のリストに置き換えられます。

実装するのは少し難しいですが、私がそれを理解した後は簡単ではありませんでした。そしてそれは動作します....ある種。

これは奇妙なことです。このページに一度アクセスし、アイテムを選択してから上記の手順を実行すると、すべてが期待どおりに機能します。(ここではl-1を見ていきます)。オートコンプリートを使用してリストビューを何度でも生成できます。l -1をクリックすると、スタイルが適用され、ajaxが正常に起動し、要素が強調表示されます。私は幸せです、そして勇気づけて背中を軽くたたきます。

ただし、ここから奇妙なことが始まります-ホームページに戻って(戻るボタンを使用せず、単純なjQuery Mobileリンクを使用して)ページを離れ、そこに到達したら、このページに戻るためのリンク、私は戻ってきました。このページがPage-2と呼ばれているとしましょう。Page-2では、最初はうまくいきます。オートコンプリートを使用してリストを生成しますが、 l-1アイテムをクリックすると、次のようになります(または発生しません)。

  1. スタイルlistitemには適用されません。
  2. ajaxリクエストが呼び出され、成功を返します。
  3. 成功要素が強調表示されます。
  4. 不思議なことに、ajaxは2回呼び出され、同じデータを返します。

私が去ってまた戻ってきた場合、同じことが起こります

  1. スタイルlistitemに適用されます。
  2. これで、ajax呼び出しが3回行われます。

このパターンは次のように続きます(おそらくしばらくの間-私は最大8回試しました):

  1. 奇数回のトリップバックでは、スタイル適用されます。例:(3回目のトリップバック、5回目、7回目)
  2. #が戻っても、スタイル適用されません。例:(4、6、8)
  3. 戻るたびに、行われるajaxリクエストの数が1つ増えます。最初のトリップと8回目のトリップでネットワークパネルの写真を参照してください(これは、同じマウスクリック以外の何物でも生成されません)。

最初の訪問、1クリック

8ページ目ビスト、1クリック

画像を右クリックして[新しいタブで開く]を選択すると、画像を新しいタブでフルサイズで開くことができます。

洞察はありますか?

更新:2012年9月27日、東部標準時午後1時5分。

偶数ページの訪問でクリックされたボタンにスタイリングが適用されない問題を修正しましたが、根本的な問題のため、そのままの修正は単なる修正であると感じざるを得ません。おそらく、私の解決策がそれを修正したという事実は、問題をよりよく明らかにするでしょう。

解決策は、ボタンのスタイルをajax呼び出しの前からコールバックに移動することでした。これにより、スタイルはajaxリクエストが完了するまで適用されません。

4

1 に答える 1

0

わかりました - まあ、これは長すぎて、誰も読むのに時間がかからなかったと思います. 私は解決策を見つけましたが、解決策は問題の核心には達していないと思います。解決策は、繰り返し ajax が呼び出された直後に $.fn.event.stopPropagation を追加することでした。

これが役立つ理由は、問題の手がかりです。私が考えることができる唯一のことは、この問題を引き起こし、私のソリューションでそれを修正することです。関数は複製され、pageInit にバインドされたまま成長し続ける関数の最後にアタッチされていました。

もちろんそれは意味がありませんし、私は他の場所でそれが起こったことがないので途方に暮れています.

于 2012-09-30T21:56:05.103 に答える