CSSで「= XYZ」のラベルを選択する方法は?


256

HTML:

<label for="email">{t _your_email}:</label>

CSS:

label {
  display: block;
  width: 156px;
  cursor: pointer;
  padding-right: 6px;
  padding-bottom: 1px;
}

'for'属性に基づいてラベルを選択して、レイアウトを変更したいと思います。

回答:


496

セレクターはlabel[for=email]なので、CSSでは次のようになります。

label[for=email]
{
    /* ...definitions here... */
}

...またはDOMを使用するJavaScriptで:

var element = document.querySelector("label[for=email]");

...またはjQueryを使用するJavaScriptで:

var element = $("label[for=email]");

これは属性セレクターです。一部のブラウザー(IE <8のバージョンなど)は属性セレクターをサポートしていない場合がありますが、最近のものはサポートしています。IE6やIE7のような古いブラウザーをサポートするには、残念ながらクラス(まあ、または他の構造的な方法)を使用する必要があります。

(テンプレート{t _your_email}ではフィールドがで埋められると想定していid="email"ます。そうでない場合は、代わりにクラスを使用してください。)

選択している属性の値がCSS識別子のルールに適合しない場合(たとえば、スペースや角かっこが含まれている場合、または数字で始まる場合など)は、値:

label[for="field[]"]
{
    /* ...definitions here... */
}

彼らは、単一または二重引用符可能


次に、条件付きコメントを使用してie7のクラスに変更します。すばらしい回答をありがとう!
カイル

そして今、jQueryのドキュメントでは、単一の単語の引用符は必要ないので、CSSに再度一致します(この点に関して)。
TJクラウダー

6
誰にでも混乱を避けるために間にスペースがあってはならない、(私はこの自分自身を持っていた)label[for=email]
paddotk

IE8は、ページに<!DOCTYPE>が宣言されている限り、属性セレクターをサポートします。
ilinamorato 2013年

1
@TJCrowderわかりました。私はそれをテストしたばかりなので、ポイントを明確にするだけでした。
ilinamorato 2013年

0

コンテンツが変数の場合は、引用符で連結する必要があります。それは私のために働いた。このような:

itemSelected(id:number){
    console.log( 'label contains'、document.querySelector( "label [for = '" + id + "']"));
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.