Вопрос простой; используя функцию jQuery css
, вычисленный стиль атрибута CSS может быть возвращен, но что, если существует более одного стиля для визуализируемого атрибута? Например:
Some underline text
Инструкция $ ('# foo'). Css ('text-decoration');
вернет подчеркивание
. Теперь, если я изменю его на
Some underline text
, инструкция $ ('# bar'). Css ('text-decoration');
вернет сквозную строку
, хорошо.
] Но фактический текст также подчеркивание
! Как я могу вернуть оба? Нужно ли мне искать всех предков, если я хочу знать, является ли какой-то текст одновременно подчеркиванием
и сквозной строкой
? Звучит немного обидно, не так ли?
** Edit **
Другая проблема возникает с этим HTML
some text
, где $ ('# e1'). Css ('text- украшение ');
по какой-то причине возвращает none
, в то время как текст явно подчеркнут.
** Заявление об ограничении ответственности **
Этот вопрос не чтобы обсудить, как UA отображает элемент, но применяет ли иерархия элементов CSS или нет. Если кто-то хочет лучше понять украшение текста
, я предлагаю прочитать об этом . Вопрос пытается сосредоточиться на более общем вопросе. Например, это также может применяться к этому HTML
, где можно захотеть узнать, отображается ли ключевое слово элемента
или нет. С помощью приведенного ниже кода это просто делается с помощью
cssLookup($('#keyword'), 'display', 'none'); // -> true
** UPDATE **
После всех ответов и комментариев вот, на основе решения Брока Адамса :
/**
* Lookup the given node and node's parents for the given style value. Returns boolean
*
* @param e element (jQuery object)
* @param style the style name
* @param value the value to look for
* @return boolean
*/
function cssLookup(e, style, value) {
var result = (e.css(style) == value);
if (!result) {
e.parents().each(function() {
if ($(this).css(style) == value) {
result = true;
return false;
}
});
}
return result;
}
Спасибо всем за ваш вклад.