タイトルは一目瞭然だと思いますが、ここで説明します。jQueryとモバイル開発は初めてです。jQuery Mobileの標準.cssファイル(実際にここで見つけた説明:http ://www.adobe.com/devnet/dreamweaver/articles/theme-control-jquery-mobile.html )を使用しているときに、動的に交換しようとしていますJS関数を介して別のコンテンツにdivコンテンツがありますが、cssテーマは引き継がれません。これが私のコードの簡略化されたバージョンです:
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="jquery.mobile-1.2.0.min.css" />
<script src="jquery-1.8.2.min.js"></script>
<script src="jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript">
function callNext () {
$('#div_auth').html($('#div_functions').html());
}
</script>
</head>
<body>
<div data-role="page" id="div_main">
<div data-role="header">
<h1>Phonegap Test</h1>
</div>
<div data-role="content" id="div_auth">
<form name="fields" action="">
Name: <input type="text" id="login" name="login"/><br>
<button type="button" onclick="callNext();">Send</button>
</form>
</div>
</div>
<div data-role="content" id="div_functions">
<form name="functions" action="">
<button type="button">Client List</button> <br>
<button type="button">Price List</button>
</form>
</div>
</body>
</html>
したがって、div_authコンテンツがロードされると、デフォルトでdata-theme = "a"がロードされます(これは、div_authではなくdiv_mainに含まれていると思いますが、とにかく)。ただし、ボタンをクリックすると、div_functionsにデータテーマを指定しても、ボタンは標準の「css-less」htmlボタンとしてレンダリングされます。
誰もが疑問に思う前に、JS関数を介してdivスワップを呼び出す必要があります。これは、開発を開始しているPhonegap / Cordovaアプリケーションを単純化したものであり、この呼び出しは実際の動作をエミュレートするためです。ただし、上記のコードをテストしたところ、(誤)動作はまったく同じです。
編集:
スコットの答えを理解するために、私は少し何かを試しました。
<div data-role="content" id="div_auth" data-theme="b">
<form name="fields" action="">
Name: <input type="text" id="login" name="login"/><br>
<button data-theme="a" type="button" onclick="callNext();">Send</button>
</form>
</div>
ご覧のとおり、div_authにdata-theme = "b"を明示的に追加し、ラップされたボタンにdata-theme="a"を追加しました。驚いたことに、それは実際に機能し、ボタンが黒っぽい色でレンダリングされている間、div_authは青いテーマを想定しています。ただし、2番目のdiv(div_functions)で同じアプローチを使用すると、まったく同じテーマを使用しても、cssスタイルが添付されていないボタンが作成されます。
<button data-theme="a" type="button">Price List</button>
それでも「古いボタン」をレンダリングします。