2012-01-30 7 views
1

私は本当に次の問題で苦労しています。私はjQueryMobileを使用していますjQueryMobile - SimpleDialog fullHTML rel = 'close'が何度も戻ってきます

- SimpleDialogプラグインがhereが見つかりました:

私はできるだけ頻繁に私はそうのように必要として呼び出すことができるようにグローバルなユーティリティ関数を作成するために考え出し:

function popAlert(title, msg) { 
    $(this).simpledialog({ 
     'mode' : 'blank', 
     'prompt' : title, 
     'cleanOnClose' : true, 
     'useModal':true, 
     'fullHTML': msg + '<a rel="close" data-role="button" data-theme="c">Ok</a>' 
     }) 
    $(this).simpledialog('refresh'); 
} 

は、私はちょうどその時欲しいですユーザーはダイアログページが消えて、ダイアログボックスの「X」ボタンの機能のように前のページに戻ります。

しかし、ダイアログが呼び出されるたびに、スタックにバックムーブが追加されます。つまり、ユーザーがOkを押すと2回呼び出された場合、モバイルアプリは前のページに移動し、前のページに移動します.2回後に移動します。

提案がありますか?

ありがとうございました。

答えて

2

私は同じ問題がありました。修正しました - 使用したrel='close'の代わりに

onclick="$('#simpledialog').simpledialog('close');" 
0

回答は電話で機能していませんでした。私は別のことを試してみましたが、モーダルウィンドウを持っていて、固定フッタメニューを持っていない場合には働いています(メニューはアンドロイド2.3で修正されていないためです)。

$('.ui-simpledialog-screen').click(); 

ウィンドウをクリックするだけです。

0

rel closeのどこに問題があると思いますか?ファイルjquery.mobile.simpledialog.jsで

(ライン129)

if (o.mode === 'blank') { 
    self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() { 
     self.close(); 
      alert('1'); 
    }); 
} 

アラート入れて、モバイルブラウザ(アンドロイド2.3.3)で試してみてください最初のオープンにして閉じた場合、あなたは1つのアラートを取得ウィル、secoundオープンにし、次の2つのアラートを取得します閉じて、すべての時間がイベントを結合し、アンバインドんように...

シーム(おそらく負荷にページが遷移しない負荷を使用してイムが発生しません)

私はデリゲートをよく知らないので、このコードをb jquery関数のインデントとアンバインド

if (o.mode === 'blank') { 
     self.pickerContent.find('[rel="close"]').bind('click',function() { 
     self.close(); 
     self.pickerContent.find('[rel="close"]').unbind(); 
     }); 
     /* 
     self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() { 
     self.close(); 
     });*/ 
} 

私はモバイルブラウザでテストを行っていますが、現在作業中です。

おそらくself.pickerContent.undelegate( '[rel = "close"]');元のコードを修正します。私はより多くの異なる動作であり、とlocalYとモバイルブラウザ上で

近い別の行動でそのdiferent行動のbecouse、私はuseDialogが偽で使用され、私は携帯のブラウザでそれを置くとき、私は、ダイアログを取得見つける何

。これは の

行141 - jquery.mobile.simpledialogです。あなただけ置けばJS

if ((docWinWidth > 400 && !o.useDialogForceTrue) || o.useDialogForceFalse || o.fullScreen) { 

useDialogは400ピクセル大きいとならば、あなたは真のuseDialogForceTrue =を置く必要があり、あなたはすべてのブラウザにダイアログが表示されます動作しません本当です。ショーダイアログモード(docWinWidth、useDialogForceTrue、useDialogForceFalse、fullScreen、useDialog)に影響する5つの変数があるため、少し混乱します。つまり、useDialogを使用する場合、モバイルブラウザでfalseを指定すると、常にダイアログボックスが表示されます(docWinWidth> 400 & &!o.useDialogForceTrue)。

次に、私は理解したと言いましたが、今このダイアログでさまざまなコンテンツをリロードしてから、閉じて別のコンテンツactivedialog.simpledialog( 'close')で再オープンします。

ライン213 - その後、jquery.mobile.simpledialog.js

if (self.options.cleanOnClose === true && self.options.useDialog === false) { 
    self.clean(); 
} 

が、ダイアログされている場合うーん...あなたがプロパティを使用することはできませんが、あなたはダイアログ

の内容をきれいにすることはできません「cleanOnClose」私は単純にするためのチェックを外しているやったことは、ダイアログで

場合(self.options.cleanOnClose ===真){

、今Imが異なるコンを示すためのダイアログを再利用10トン

は、問題のsimpledialog2多くは、このバージョンで解決されて使用することを提案します!