要素に定義されたcssプロパティがあるかどうかを確認する必要がありますが、jQuery.css()関数の使用に問題があります。
私が探しているプロパティは幅です。
要素の幅が定義されていない場合、これを試します:
if(base.$element.css('width') !== 'undefined')
ブラウザの計算された幅を取得します。
これは、インラインスタイルプロパティの値を取得する(そして、そのプロパティが見つからない場合は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
_の使用をカスタムのラクダケース関数に置き換えたい場合があります。jQueryの関数はドキュメント化されていないようで、おそらく依存するのが適切ではないからです。短いのでここで使用しました。
これが 実行例 です。この場合、要素でスタイルが見つからなかった場合、戻り値は空の文字列になることに注意してください。それでもfalse
と評価されるため、上記のif
ステートメントは引き続き機能します。
なぜだけではありません:
var $el = $('element[style*="width"]');
そして、あなたはそれをテストすることができます:
if ( $el.length ) {
//...
}
使用する .attr
style
属性を確認します。
if(base.$element.attr('style').length > 0) {
//...
}
幅が気になるなら、
if(base.$element.attr('style').indexOf('width') !== -1) {
//...
}
たとえば、「幅」の確認:
if ($(element).prop("style")["width"] !== '')
{...}