私はjqueryモバイルページに取り組んでいますが、その上にいくつかのボタンがあり、たとえば次のような独自のスタイルがあります。
一種のクライアント側の「jquery駆動型ウィザード」の一部として...
<button data-function="back" class="back">Back</button>
<button data-function="next" class="next">Next</button>
<button data-function="submit" class="submit">Submit</button>
...ウィザードのどこにいるかに応じて、これらのボタンは表示/非表示になります。
問題ありません...私がスタイルに到達するまで。JQueryはそれ自体で「ボタンをラップして非表示にする」ので、次のようになります...
<div class="ui-btn ...">
<span class="ui-btn-inner ...">Back</span>
<button class="back">Back</button>
</div>
上で述べたように、それは私のボタンを隠し、そして戻るボタンの私のカスタムスタイルは事実上失われます。カスタムボタンだけですべてのボタンのスタイルを設定したくありません。
JQueryを使用して、ドキュメント対応スクリプトの一部としてカスタムスタイルを親の「div」要素に移動することを考えましたが、これはボタンごとに行う必要があるのはばかげているようで、ロジックが非常に複雑になるか、時間がかかる可能性があります。別のボタンタイプが必要になるたびにこれを行うため。
「JQuery、生成したボタン要素にこのクラスを適用したい...」という標準的な言い方はありますか、それともバグですか?
たとえば、他の人がこのアプローチを完全に使用しないことに気づきました... http://m.nationalrail.co.uk/pj/home
ボタンに関する公式のJQueryモバイルページにアクセスすると、同じ動作を示すように見えます:http: //jquerymobile.com/demos//1.2.0/docs/buttons/buttons-types.html
(アクセスする前に、ブラウザエージェントをモバイルデバイスに変更することを忘れないでください)
何か案は?理想的には、ページの速度を落としたり、青とオレンジのボタンを並べたいという理由だけで維持しなければならないコードを追加したりしないように、独自のJQueryを使用してスタイルを適切な要素に「ハッキング」しないようにします。
問題は、これが当社のメインランディングページ用であるため、スタイルが非常に重要であると考えられていることです。
@Gajotresの編集:
別のテーマを追加すると問題が解決する場合がありますが、このページの私の使命は、できるだけ早く実行することであり、複数のテーマでページをロードすると、ロード時間が長くなります。
私はこのようなことを可能な解決策と考えましたが、JQueryはすでにこれを行っているはずなので、おそらく私は何か間違ったことをしているのではないかと思いました...
<script type="text/javascript">
var allButtons = $(button);
allButtons.each(function() {
var css = $(this).className;
$(this).prev().addClass(css);
});
</script>
これにより、ボタンのクラスをjqueryが生成し、その場所に表示されているスパンタグに適用することになります。次に、特定のクラスを選択的にコピーするために、さらにいくつかの機能を追加する必要があります(ダムのimoだけ)。
ここでJQueryのアプローチを取ると、次のようなものを追加できます...
data-customStyle="myClass"
...各ボタンにスタイルを設定してから次のようなものを使用します...
<script type="text/javascript">
var customButtons = $("data-customStyle");
customButtons.each(function() {
$(this).prev().addClass($(this).data("customStyle"));
});
</script>
...「ボタンを表すjqueryタグ」にスタイルを追加します。
これについての私の考え...WTF?!?!
JQueryは、人生を楽にすることであり、確かに難しくはありませんか?基本的にサーバー上ですでに行ったことを実行するために「ハックアドイン後」のものを実行する必要はなく、JQueryが機能しなくなりました。
これはJQueryのバグですか?