Есть ли селектор CSS для элементов, содержащих определенный текст?

Я столкнулся с этой проблемой ... в моем случае у меня закончилось хранение на выделенном сервере. Убедитесь, что если все остальное не работает и рассматривается увеличение дискового пространства или удаление нежелательных данных или файлов.

420
задан BoltClock 30 March 2015 в 05:37
поделиться

6 ответов

Если я правильно прочитал спецификацию , то нет.

Вы можете сопоставить элемент, имя атрибута в элементе и значение именованного атрибута в элементе. Однако я не вижу ничего, что соответствовало бы содержимому элемента.

345
ответ дан 22 November 2019 в 23:05
поделиться

Вы можете установить контент как атрибут данных, а затем использовать селекторов атрибутов , как показано здесь:

/* Select every cell containing word "male" */
td[data-content="male"] {
  color: red;
}

/* Select every cell starting on "p" case insensitive */
td[data-content^="p" i] {
  color: blue;
}

/* Select every cell containing "4" */
td[data-content*="4"] {
  color: green;
}
<table>
  <tr>
    <td data-content="Peter">Peter</td>
    <td data-content="male">male</td>
    <td data-content="34">34</td>
  </tr>
  <tr>
    <td data-conten="Susanne">Susanne</td>
    <td data-content="female">female</td>
    <td data-content="14">14</td>
  </tr>
</table>

Вы также можете использовать jQuery для простой установки атрибутов содержимого данных:

$(function(){
  $("td").each(function(){
    var $this = $(this);
    $this.attr("data-content", $this.text());
  });
});
24
ответ дан Josh Habdas 30 March 2015 в 05:37
поделиться

Вам необходимо добавить атрибут данных в строки с именем data-gender со значением male или female и использовать селектор атрибута:

HTML:

<td data-gender="male">...</td>

CSS:

td[data-gender="male"] { ... }
102
ответ дан Rudolph Gottesheim 30 March 2015 в 05:37
поделиться

@ voyager ответ об использовании атрибута data-* (например, data-gender="female|male" - самый эффективный и подход в соответствии со стандартами на 2017 год:

[data-gender='male'] {background-color: #000; color: #ccc;}

). ] можно получить , так как есть некоторые, хотя и ограниченные селекторы, ориентированные вокруг текста. :: first-letter является псевдоэлементом , который может применять ограниченную стилизацию к первой букве. элемента. Существует также псевдоэлемент :: first-line , кроме того, что выбор первой строки элемента (например, абзаца) также подразумевает, что очевидно, что CSS можно использовать для расширения эта существующая возможность стилизовать определенные аспекты textNode.

Пока такая адвокация не будет успешной и не будет реализована следующая лучшая вещь, которую я мог бы предложить, когда это применимо, к словам explode / split, использующим ограничитель пробела, выведите каждое отдельное слово внутри элемента span, а затем, если цель слова / стиля предсказуема, используйте в сочетании с : nth selec tors :

$p = explode(' ',$words);
foreach ($p as $key1 => $value1)
{
 echo '<span>'.$value1.'</span>;
}

Остальное , если не предсказуемо , чтобы снова использовать ответ voyager об использовании атрибута data-*. Пример использования PHP:

$p = explode(' ',$words);
foreach ($p as $key1 => $value1)
{
 echo '<span data-word="'.$value1.'">'.$value1.'</span>;
}
2
ответ дан John 30 March 2015 в 05:37
поделиться

Синтаксис этого вопроса похож на синтаксис Платформы Робота. В этом случае, хотя нет никакого селектора CSS, для которого можно использовать, содержит, существует ключевое слово SeleniumLibrary, которое можно использовать вместо этого. Эти Ожидают, Пока Элемент Не Содержит .

Пример:

Wait Until Element Contains  | ${element} | ${contains}
Wait Until Element Contains  |  td | male
-1
ответ дан 22 November 2019 в 23:05
поделиться

Боюсь, это невозможно, потому что контент не является атрибутом и недоступен через псевдокласс. Полный список селекторов CSS3 можно найти в спецификации CSS3 .

6
ответ дан 22 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: