gazes12
@gazes12

Как найти на странице все элементы имеющие заданные стили на чистом jQuery?

Можно ли получить все свойства со всех элементов с указанным значением свойств, средствами jquery?

Например, на сайте много объектов, у каждого объекта используется один цвет в background, или в color, или в box-shadow, text-shadow. Мне нужно получить все свойства объектов с указанным цветом, затем заменить цвет в свойствах, которые будут найдены.
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 2
Если стили прописаны в CSS, то нужно открыть css файл и через регулярку найти элементы.
С данным способом, извини, не помогу.

Если стили инлайновые, то элементы можно искать так:
// Если инлайновый стиль одинаковый
$('div[style="color:#444444"]');

// Если часть инлайнового стиля оканчивается на #444444
$('div[style$="#444444"]');

// Если часть инлайнового стиля начинается с color:#fc
$('div[style^="color:#fc"]');

// Если часть инлайнового стиля содержит rgba(255,222,1,0.15)
$('div[style*="rgba(255,222,1,0.15)"]');



// Комбинированный селектор jQuery
// ищем div и section по инлайновым стилям
let items = $(
	'div[style^="border-bottom"]',
	'section[style*="#ffffff"]',
);

// Заменяем стили найденным элементам
items.css({
	'background-color': '#ffcc00',
	'border-bottom': '2px dashed pink',
});

Значения в атрибут можешь подставлять любые.
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Конечно можно. В jQuery имеется встроенный метод .filter, который фильтрует найденные элементы по заданному условию, также в jQuery есть метод .css который позволяет узнать то или иное свойство у элемента, итого, объединив 2 этих метода получим то, что вам нужно. Вот пример, найдем все абзацы имеющие строго черный цвет:
$('p').filter(function(n, el) { return $(el).css('color') == 'rgb(0, 0, 0)'; });

Разумеется вместо абзацев можно искать что угодно, просто поставьте звездочку, а свойства можно сравнивать любые.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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