CSS 2.1に関連する通常のIEバグを修正しようとしていますが、要素のスタイルプロパティを変更してカスタムのテキスト配置スタイルを追加する方法が必要です。
現在、jQueryでは次のようなことができます
$(this).width() or $(this).height()
しかし、この同じアプローチでテキストの配置を変更する良い方法を見つけることはできないようです。
アイテムにはすでにクラスがあり、そのクラスにテキストの配置を設定しましたが、うまくいきません。クラスが定義された後に、この要素にtext-align CSS属性を追加することは可能ですか?
私はこのようなものを持っています
$(this).css("text-align", "center");
幅の調整後、Firebugでこれを表示した後、スタイルに設定されているプロパティは「幅」のみです。助けがありますか?
編集:
おっ-この質問に対する大きな反応!目の前の問題についてもう少し詳しく:
jqGrid A3.5のjsソースを調整して、カスタムサブグリッドの作業を行います。実際に調整しているJSを以下に示します(上記の例では "this"を使用していますが、私はこれを簡潔にするためにシンプルにしたかった)
var subGridJson = function(sjxml, sbid) {
var tbl, trdiv, tddiv, result = "", i, cur, sgmap,
dummy = document.createElement("table");
tbl = document.createElement("tbody");
$(dummy).attr({ cellSpacing: "0", cellPadding: "0", border: "0" });
trdiv = document.createElement("tr");
for (i = 0; i < ts.p.subGridModel[0].name.length; i++) {
tddiv = document.createElement("th");
tddiv.className = "ui-state-default ui-th-column";
$(tddiv).html(ts.p.subGridModel[0].name[i]);
$(tddiv).width(ts.p.subGridModel[0].width[i]);
trdiv.appendChild(tddiv);
}
tbl.appendChild(trdiv);
}
以下の両方を(提供された回答から)試してみましたが、運はありません。
$(tddiv).width(ts.p.subGridModel[0].width[i]).attr('style', 'text-align: center');
そして
$(tddiv).width(ts.p.subGridModel[0].width[i]).css('text-align', 'center');
私はこの問題に引き続き取り組み、この奇妙な問題に苦痛を感じている人のために最終的な解決策を投稿します。
ドキュメントが示すように、あなたは正しい考えを持っています:
http://docs.jquery.com/CSS/css#namevalue
これをクラスまたはIDで正しく識別していますか?
たとえば、クラスがmyElementClassの場合
$('.myElementClass').css('text-align','center');
また、私はしばらくの間Firebugで作業したことはありませんが、htmlではなくdomを見ていますか?ソースはjavascriptによって変更されませんが、domは変更されます。 [dom]タブを見て、変更が適用されたかどうかを確認します。
以下を試して、要素にインラインスタイルを追加することもできます。
$(this).attr('style', 'text-align: center');
これにより、他のスタイリングルールが機能すると思っていたものを上書きしないようにする必要があります。通常、インラインスタイルが優先されると考えています。
EDIT:また、Jash( http://www.billyreisinger.com/jash/ )。 javascriptコマンドプロンプトが表示されるため、javascriptステートメントを簡単にテストし、正しい要素などを選択していることを確認できます。
私は通常使用します
$(this).css({
"textAlign":"center",
"secondCSSProperty":"value"
});
役立つことを願っています
「text-align」の代わりに「textAlign」を使用する必要があると思います。
面白い。テスト版を書いたとき、私はあなたと同じ問題を抱えていました。
解決策は、jqueryの機能を使用して chain を実行することです。
$(this).width(500).css("text-align", "center");
興味深い発見。
ビットを拡張するために、以下はnot動作します
$(this).width(500);
$(this).css("text-align", "center");
その結果、スタイルに設定されている幅のみになります。上で提案したように、2つのチェーンはうまく機能しているようです。
$(this).css("text-align", "center");
は動作するはずです。'this 'が実際にtext-alignスタイルを設定しようとしている要素であることを確認してください。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$( document ).ready(function() {
$this = $('h1');
$this.css('color','#3498db');
$this.css('text-align','center');
$this.css('border','1px solid #ededed');
});
</script>
</head>
<body>
<h1>Title</h1>
</body>
</html>
正しい?
<script>
$( "#box" ).one( "click", function() {
$( this ).css( "width", "+=200" );
});
</script>
$(this).css({'text-align':'center'});
これの代わりにクラス名とIDを使用できます
$('.classname').css({'text-align':'center'});
または
$('#id').css({'text-align':'center'});
テキストボックスの中心を設定する方法