Я работаю над реализацией функциональности динамического стиля в Wordpress, используя jQuery. Меня оспаривает тот факт, что jQuery использует встроенный стиль, который может влиять на то, что вложенные элементы могут быть нацелены на селектор, даже если тот же селектор не действует в правилах CSS. Чтобы проиллюстрировать, что я имею в виду, пожалуйста, взгляните на это JSFiddle.Как управлять (избегать) стилей вложенных элементов html при использовании jQuery, если классы не являются опцией?
HTML:
<p>
This is normal text
<br>
<br>
<em>This is italic text</em>
<br>
<br>
<strong>This is bold text</strong>
<br>
<br>
<strong><em>This is bold italic text</em></strong>
<br>
<br>
<em><strong>This is also bold italic text</strong></em>
<br>
<br>
</p>
<button>
Style it!
</button>
CSS:
p em strong,
p strong em {
color: red;
}
p strong {
color: blue;
}
JQuery:
(function($) {
$('button').on('click', function() {
$('p strong').css('color', 'turquoise');
});
})(jQuery);
Как показано, CSS стиль смелого текста действует только на жирный текст, как и ожидалось, но с jQuery - с использованием того же селектора, экземпляр жирного курсивного текста, который имеет тег в качестве вложенного тега, также является ffected.
Возможно ли сделать выбор jQuery, который не включает вложенные элементы, как в примере? Очевидно, если бы я мог использовать классы, решение было бы простым, но в этом случае я не могу.
Если я добавлю важный параметр к элементам, которые первоначально были красными, я получаю то, что хочу, но мне бы очень хотелось избежать этого, если это вообще возможно. Спасибо.
Вы хотите решить конкретный вариант использования? Или эта проблема вообще? – jwatts1980
Я думаю, что он охватывает обе категории. –
Не обязательно. Вы можете исключить совпадения из выбора jQuery, например '$ ('p strong'). Not ('p em strong')', который бы разрешил конкретный вариант использования. – jwatts1980