2012-03-13 5 views
3

jqueryで使用するために、既存の属性をhtml要素に付加することをお勧めします。例:既存の属性がないHTML入力フィールド

<input type="text" valrule="someregexstring" /> 

次に、jrueryを使用して、valruleという属性を含むすべての要素を選択し、正規表現文字列を解析します。

プログラミングの標準とベストプラクティスが行われる限り、これは「ノー・ゴー」ですか?このような新しい属性の

答えて

6

プレフィックスdata-<myAttribute>を使用してください。これはHTML5でサポートされていますが、他のブラウザでは無視され、.data()メソッドを使用してjQueryで簡単にアクセスできます。

<input id="myInput" type="text" data-MySuperMassiveAttribute="Awesome"/> 

、あなたはそうのようにその情報を取得することができます。まだHTML5をサポートしていません

var howAmI = $('#myInput').data('MySuperMassiveAttribute'); 
alert(howAmI); // now everybody knows how awesome you are ;-) 
+0

+1のjQueryの例。 – Antti29

3

使用HTML5データ - プレフィックス:私は個人的にそれをしないだろう

http://ejohn.org/blog/html-5-data-attributes/

+0

とブラウザ?彼らは単に属性を無視するのだろうか? –

+1

ちょうどそれを無視する...ポイントはHTML 5に有効です。 –

+2

はい、jquery data()関数を呼び出して、対応する値を取得できます。 '

' 'var baz = $( 'div')。データ( 'foo');' – websymphony

0

<input type="text" data-valrule="someregexstring" /> 

その有効なHTML 5 ..一部のブラウザでは、HTMLの解析時に「存在しない」属性が無視されるため、これらの属性はブラウザのページDOMに保存されません。 jQueryセレクタが実行されると、この属性が見つからないことがあります。

HTML5準拠のブラウザで動作させることが保証されている場合は、HTML5 という接頭辞を属性に使用できます(例:

<input type="text" data-valrule="someregexstring" /> 

ただし、これは古いブラウザで実行しても機能しない可能性があります。たとえば、クライアントのほぼ半数がIE7を使用してアップグレードを計画していない(政府のスピードで動いている)ことがわかりました。

+2

あなたは何を無視していいですか?私は "存在しない"属性の問題に遭遇したことはありませんでした。そして、data- *はHTML <5で有効です! – gdoron

+0

私はこれが間違いなく起こると述べていません。私は単に、「存在しない」属性の動作が古いブラウザでは定義されていないことを示しました。 –

+0

@gdoron - "data- *はHTML <5"で有効です。あなたはどこからそれを手に入れましたか? @Alohci。 – Alohci

2

間違いなく可能です。 HTML5では、data-という属性が導入されましたが、非標準属性を標準的な方法で要素に設定することができます。

あなたは、単にdata-

<input type="text" data-valrule="someregexstring" /> 

と属性名の前に付けるこれはHTML5で導入された、が、あなたはまだHTML4のための文書でそれを使用することができます。 jQueryの(1.4.3+)を使用


DATA-属性は.data()でアクセスすることができる - または.attr()介し。

関連する問題