Ответ 1
Здесь очень простой (возможно, очень нуждающийся в улучшении) плагин, который я сбросил вместе, и вы получите значение свойства встроенного стиля (и верните undefined
, если это свойство не найдено):
(function ($) {
$.fn.inlineStyle = function (prop) {
var styles = this.attr("style"),
value;
styles && styles.split(";").forEach(function (e) {
var style = e.split(":");
if ($.trim(style[0]) === prop) {
value = style[1];
}
});
return value;
};
}(jQuery));
Вы можете называть это следующим образом:
//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");
Здесь рабочий пример.
Обратите внимание, что он вернет только значение для первого элемента в согласованном наборе.
Так как он возвращает undefined
, когда свойство стиля не найдено, вы можете использовать его в своей ситуации следующим образом:
if (base.$element.inlineStyle("width")) {
// It has a `width` property!
}
Обновление
Здесь гораздо более короткая версия. Я понял, что prop("style")
возвращает объект, а не строку, а свойства этого объекта соответствуют доступным свойствам стиля. Поэтому вы можете просто сделать это:
(function ($) {
$.fn.inlineStyle = function (prop) {
return this.prop("style")[$.camelCase(prop)];
};
}(jQuery));
Возможно, вы захотите заменить использование $.camelCase
на пользовательскую функцию camelcase, так как jQuery кажется недокументированным и, вероятно, нехорошо полагаться на него. Я просто использовал его здесь, поскольку он короче.
Здесь рабочий пример этого. Обратите внимание, что в этом случае возвращаемое значение будет пустой строкой, если стиль не найден в элементе. Это все равно будет оценено до false
, поэтому приведенный выше оператор if
должен работать.