要素に定義されたcssプロパティが指定されているかどうかを確認する必要がありますが、jQuery.css()関数の使用に問題があります。
私が探しているプロパティは幅です。
要素に定義された幅がなく、これを試してみる場合:
if(base.$element.css('width') !== 'undefined')
ブラウザの計算された幅を取得します。
要素に定義された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 ) {
//...
}
たとえば、「幅」を確認します。
if ($(element).prop("style")["width"] !== '')
{...}
属性.attr
を確認するために使用します。style
if(base.$element.attr('style').length > 0) {
//...
}
幅が気になるなら、
if(base.$element.attr('style').indexOf('width') !== -1) {
//...
}
スタイル属性が未定義かどうかを確認できるマシュー
var attr = $(this).attr('style');
if (typeof attr !== 'undefined' ) {
}