2012-01-14 17 views
3

では動作しませんmobile.changepageを使用しては、私はページ上のボタンをクリックしたときに表示されるダイアログ(しない外部HTML)を、持っている、それが正常に動作しますアクセスする最初のページが表示されますが、別のページからhrefをクリックしてそのファイルを開くと、ボタンをクリックするとダイアログが表示されません。ここでJquerymobileダイアログ2ページ

がダイアログを含むページのコードである[...]ボタンのクリックイベントでアラートが、これがアクセスされる最初のページでない場合であっても、最大表示されますが、ダイアログは表示されません。 。あなたはjQueryのモバイルv1.0のを使用しますが、それはv1.0のアルファを言ったかのように、同時にあなたは$.mobile.changePageに間違った引数を渡す

<!DOCTYPE html> 
<html> 
<head> 
<title>Create Team</title> 
<link rel="stylesheet" 
    href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> 
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script> 

</head> 
<body> 

    <!-- Page starts here --> 
    <div data-role="page" data-theme="b" id="page1"> 
     <div data-role="header" id="hdrMain" name="hdrMain" 
      data-nobackbtn="true"> 
      <h1>Test screen</h1> 
     </div> 
     <div data-role="content" id="contentMain" name="contentMain"> 
      <div id="fullnamediv" data-role="fieldcontain"> 
       <label for="fullname" id="fullnameLabel" name="fullnameLabel">Team 
        Name*</label> <input id="fullname" name="fullname_r" type="text" /> 
      </div> 
      <div id="submitDiv" data-role="fieldcontain"> 
       <a id="buttonSave" name="buttonSave" href="#" data-role="button" 
        data-inline="true">Save</a> 
      </div> 
     </div> 
     <!-- contentMain --> 
     <div data-role="footer" id="ftrMain" name="ftrMain"></div> 
     <script> 
      $("#page1").bind("pagecreate", function() { 
       $('#buttonSave').click(function() { 
        alert("aaaa"); 
       $.mobile.changePage('#successdiv', { 
        transition: 'pop', 
        reverse: false, 
        changeHash: true 
       }); 
        alert("after change"); 
        return true; 
       }); 
      }); 
     </script> 

    </div> 
    <!-- page1 --> 

    <div data-role="dialog" data-theme="a" id="successdiv"> 
     <div data-role="header" data-theme="f"> 
      <h1>Error</h1> 
     </div> 
     <div data-role="content"> 
      <p>This is Page 2</p> 
      <button type="submit" data-theme="e" name="successok" 
       value="submit-value" id="successbutton">Close Dialog</button> 
     </div> 
    </div> 
    <!-- Page ends here --> 
</body> 

</html>  
+0

経由だけで明確にするために、あなたは外部のページを持っており、それが#successdivページへのリンクがありますこれはダイアログとして開かれませんか? – JoshRoss

+0

いいえ、上記のページはsecondpage.htmlで、私はfirstpage.htmlである別のページがあるとしましょう。私は最初にブラウザのfirstpage.htmlにアクセスし、secondpage.htmlへのhrefを持っています(通常のhrefで、ダイアログなどではありません)。そしてsecondpage.html(上記のコード)の中でボタン "buttonave"をクリックするとダイアログ "successdiv"が開きます。私はsecondpage.htmlを直接開いてボタンをクリックすると、これはうまく動作します(ダイアログが表示されます)。しかし、firstpage.htmlを開いた場合は、secondpage.htmlのhrefをクリックしてから、buttonave(secondpage.htmlにある)をクリックするとダイアログが表示されません。 –

+1

それは明らかです。ダイアログのHTMLコードはsecondpage.htmlで定義します。最初のjQuery Mobileからsecindページに移動すると、secondpage.htmlから最初のページ要素(data-role = "page"を持つdiv)がロードされます。したがって、要素 '#successdiv'は読み込まれず、ページには存在しません。あなたにダイアログとしてあなたを見せてくれるものは何もありません。 – dfsq

答えて

2

。それはあなたの問題を解決するかどうかを確認しますが、試してみる価値はありません:

$.mobile.changePage('#successdiv', { 
    transition: 'pop', 
    reverse: false, 
    changeHash: true 
}); 
+0

これを指摘していただきありがとうございます、これを試してみてください、同じ運がない、ダイアログが表示されません。 javascriptコンソールにエラーはなく、chrome/firefox/androidブラウザでの動作は同じですが、最初にこのページにアクセスしてからボタンをクリックするとうまく動作します。 –

+0

最初の引数として文字列の代わりにオブジェクトを渡そうとしましたか? '$ .mobile.changePage($( '#successdiv')、{...});'と似ています。 – dfsq

+0

はい、運がまだありません。「Uncaught TypeError:未定義のメソッド '_trigger'をJavaScriptコンソールで呼び出せません」というエラーが表示されます。 –

1

私はのhrefを経由して別のjqueryのモバイルページからジャンプしたとき、私はこのように、外部へのrel属性を設定する必要があります。

<a href="page2.html" rel="external">page2</a> 
1

dfsqが正しい場合、別のページからこのページにリンクすると、div [data-role = "page"]のみが読み込まれます。私は、独自のHTMLファイルにダイアログを移動し、それを開くことをお勧めしたいのいずれか

<a href="your_dialog.htm" data-role="dialog">open dialog</a> 

または

$.mobile.changePage('your_dialog.htm', {role: 'dialog', transition: 'pop'}); 
関連する問題