Aquí hay una muy simple (probablemente en necesidad de mejora) plug-in que he tirado juntos que les permite conocer el valor de un estilo en línea propiedad (y volver undefined
si no se encuentra que la propiedad):
(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));
se le puede llamar así:
//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");
Aquí hay un working example.
Tenga en cuenta que solo devolverá el valor del primer elemento en el conjunto coincidente.
ya que devuelve undefined
cuando no se encuentra que la propiedad estilo, puede utilizarlo en su situación como esta:
if (base.$element.inlineStyle("width")) {
// It has a `width` property!
}
actualización
Aquí hay una gran parte, versión mucho más corta . Me di cuenta de que prop("style")
devuelve un objeto, no una cadena, y las propiedades de ese objeto corresponden a las propiedades de estilo disponibles. Por lo que sólo puede hacer esto:
(function ($) {
$.fn.inlineStyle = function (prop) {
return this.prop("style")[$.camelCase(prop)];
};
}(jQuery));
Es posible que desee reemplazar el uso de $.camelCase
con una función CamelCase personalizada, ya que el jQuery parece ser indocumentado y es probablemente no es bueno para confiar. Lo acabo de usar aquí, ya que es más corto.
Aquí hay un working example de ese. Tenga en cuenta que en este caso, el valor de retorno será la cadena vacía si el estilo no se encontró en el elemento. Eso todavía se evaluará a false
, por lo que la declaración anterior if
debería funcionar.
Genial ... primero pensé en algunas soluciones basadas en reg-ex ... ¡si este trabajo es genial! – coolguy
Gracias James, funcionó muy bien. –
@MatthewGrima - De nada, me alegro de poder ayudar :) –