Як вибрати мітку для = "XYZ" у CSS?


256

HTML:

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

CSS:

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

Я хочу вибрати мітку на основі атрибуту "для", щоб змінити макет.

Відповіді:


496

Селектор буде label[for=email]таким, у CSS:

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

... або в JavaScript за допомогою DOM:

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

... або в JavaScript за допомогою jQuery:

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

Це селектор атрибутів . Зауважте, що деякі веб-переглядачі (наприклад, IE <8, наприклад) можуть не підтримувати селектори атрибутів, але є новітні. Для підтримки старих браузерів, таких як IE6 та IE7, вам, на жаль, доведеться використовувати клас (ну чи інший структурний спосіб).

(Я припускаю, що шаблон {t _your_email}заповнить поле с id="email". Якщо ні, використовуйте клас замість цього.)

Зауважте, що якщо значення атрибута, який ви вибираєте, не відповідає правилам для ідентифікатора CSS (наприклад, якщо в ньому є пробіли чи дужки, або починається з цифри тощо), вам потрібні лапки навколо значення:

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

Вони можуть бути одинарними або подвійними лапками .


Я заміню його на клас для ie7, використовуючи умовні коментарі тоді, дякую за чудову відповідь!
Кайл

А тепер документи jQuery кажуть, що вам не потрібні лапки для окремих слів, тому він знову відповідає CSS (у зв'язку з цим).
TJ Crowder

6
Щоб уникнути плутанини для всіх (у мене це було саме), між ними не повинно бути місця labelі[for=email]
paddotk

IE8 підтримує селектори атрибутів підтримки, поки на сторінці оголошено <! DOCTYPE>.
ilinamorato

1
@TJCrowder Я розумію. Я лише уточнював точку, коли я лише перевіряв її.
ilinamorato

0

Якщо вміст є змінною, його потрібно буде з'єднати з лапками. Це працювало для мене. Подобається це:

itemSelected (id: номер) {
    console.log ('мітка містить', document.querySelector ("label [for = '" + id + "']"));
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.