2012-01-24 2 views
1

いくつかのテキストフィールドにクラスを追加したいので、jqueryで値を取得できます。これはjQueryを使用しているときの標準的な習慣のようですが、this postは答えとして示唆していますが、これがページの読み込みにどのように影響しますか?これらのクラスをすべて見つけようとはしませんか?私は過去に、コントロールで使用されるクラスの量を最小限に抑えるように言われました。存在しないcssクラスを追加するのは悪いですか?

私は約12のコントロールを持っています。独自のクラスを追加してその価値を得たいと考えています。私はasp.netを使用しているので、私はIDを使用することはできません。私はまた、コントロールがテーブル内にあるのでClientIDを使用することはできません(ただし、一度に1セットのコントロールしか表示されません)。

<asp:TextBox ID="txtValue1" runat="server" CssClass="value1" Text='value1' /> 
<asp:TextBox ID="txtValue2" runat="server" CssClass="value2" Text='value2' /> 
<asp:TextBox ID="txtValue3" runat="server" CssClass="value3" Text='value3' /> 
... 

var value1 = $('.value1').val(); 
var value2 = $('.value2').val(); 
var value3 = $('.value3').val(); 

そして、cssにはクラス名は存在しません。

おかげ

編集:

を、私はこの作品を知っているが、私はそれがページの読み込みに与えた影響を与えるの詳細に興味がありました。 htmlパーサのようなものがクラスを無視するという回答がありました(今削除されているようです)。 cssパーサーは、定義されているクラスだけを見ます。したがって、完全に無視され、ページの読み込みに影響を与えないように思えます。これは正しいですか?

+0

私は編集が正しいとは思わない。私が知る限り、CSSはクラス名を検索し、見つけずに移動しません。私はそれがページの読み込みにいくらかの量を追加すると言いたいが、それは無視できる。 https://developer.mozilla.org/en/Writing_Efficient_CSS#How_the_Style_System_Matches_Rules http://code.google.com/speed/page-speed/docs/rendering.html#UseEfficientCSSSelectors – Renae

答えて

0

あなたはASP.Netを使用しているので、IDパラメータは使用できませんが、そうすることができます。上記セレクタは、基本的にはそうすべてmasterpagesを無視して「yourID」のid ENDINGを見つけJQuery SelectorsAttribute Ends With Selector

を:jQueryのでは、jQueryのセレクタの詳細情報については、以下の

var value1 = $('[ID$=yourID]').val(); 

を使用してコントロールがチェックアウト得ることができます最初は余分なテキスト。これらは一意であることを確認するだけです。例えば「HSBC」や「SBC」のようなIDを持たないのは、上記の「SBC」のセレクタが両方を見つけるためです。

+0

クラスを追加するとうまくいくように見えますが、これは私の現在の問題のより洗練された解決策のようです。ありがとう。 – Renae

2

存在しないCSSクラスを使用しても問題ありませんが、一意の場合はではなくclassを使用します。

+0

こんにちはLogan、IDを使用できませんctl00_ctl00_ContentPlaceHolder_txtValue1のようなものに変換されます。これは既存のコードで使用されていましたが、レイアウトが変更され、IDが変更されたため、現在作業中です。私は今、すべての壊れたjavascriptを狩る必要があります。 – Renae

+0

IDを使用することができますし、... asp.netとのJQueryでそれを使用する方法について私の答えを参照してください – harag

0

私はそれが問題だとは思わない。存在しないクラスやIDに問題があったのは、存在しなかったIDをonclickで参照していたときだけです。これは物事を混乱させた...それ以外は、クラスはかなり無害だと思う。私は知りたいと思うだろう..

他の考えは?

0

どのasp.netのバージョンを使用していますか? asp.net 4.0では、あなたはunmangled idsを使用する能力を持っています。 ClientIDMode = "Static"をすべてのテキストボックスに設定し、次にidで参照するのが最も簡単なソリューションのようです。それ以外の場合は、確かに、私は物事を参照するために存在しないクラスを作成した....すべての時間。

編集:(エフェクトページの読み込みに関するあなたのコメントに応じて)

私は、現在使用されていないdivで余分なクラスを持つことに関するあなたの質問は、(理論的な意味では)悪い質問ではないと思うし、私は正直な答えを知らない。私はどんな効果も非常に小さいと信じています。 HTMLを作成するベストプラクティスを検討する場合は、CSSを記述する前に、クラスを使用してHTMLを記述して構造化するのが一般的です。つまり、CSSを書くときには、確かにいくつかのクラスは使用されません。実際には、基本タグ(bodyh1aなど)をスタイリングした後、特定のデザインのためにこれらのクラスを持つセレクタを作成する必要はありません。それでも、次のデザインでは、これらのクラスが必要な場合があります。私は、CSSの背後にあるテクノロジーがこうした種類のシナリオを念頭に置いて構築されていると確信しています。インターネット上の何十億ものページが正確なシナリオに従わないと何百万もの賭けをしていました。特に、htmlにクラスを追加するModernizr現在のブラウザの可能な機能を考慮して選択できるクラスを提供する方法としてページの要素を使用します。それらのクラスは決して必要ではないかもしれませんが、必要な場合はそこにあります。

+0

私はこれを試みたが、IDは "私"になってしまった。私はこれがテーブルの中にあるからです。上記のコメントで私が言ったことは、あまり正しいことではありません。実際にはctl00_ctl00_ContentPlaceHolder_efX_txtValue1であり、Xは行番号です。 – Renae

関連する問題