removeattr - jquery prop
jQuery comprueba si el elemento tiene una propiedad de estilo específica definida en línea (5)
¿Por qué no solo?
var $el = $(''element[style*="width"]'');
Y luego puedes probarlo con:
if ( $el.length ) {
//...
}
Necesito verificar si un elemento tiene una propiedad css definida que se le ha asignado, pero tengo algunos problemas al utilizar la función jQuery.css ().
La propiedad que estoy buscando es el ancho.
Si el elemento no tiene un ancho definido e intento esto:
if(base.$element.css(''width'') !== ''undefined'')
Obtengo el ancho computado del navegador.
Comprobando el "ancho" por ejemplo:
if ($(element).prop("style")["width"] !== '''')
{...}
Este es un complemento muy simple (probablemente con muchas mejoras) que he reunido y que obtendrá el valor de una propiedad de estilo en línea (y se devolverá undefined
si no se encuentra esa 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));
Puedes llamarlo así:
//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");
Aquí hay un ejemplo de trabajo .
Tenga en cuenta que solo devolverá el valor del primer elemento del conjunto coincidente.
Como se devuelve undefined
cuando no se encuentra esa propiedad de estilo, puede usarla en su situación así:
if (base.$element.inlineStyle("width")) {
// It has a `width` property!
}
Actualizar
Aquí hay una versión mucho, 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. Así que puedes 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 de camelcase personalizada, ya que la jQuery parece no estar documentada y probablemente no es bueno confiar en ella. Lo usé aquí porque es más corto.
Aquí hay un ejemplo práctico de eso. 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 aún se evaluará como false
, por lo que la declaración anterior if
aún debería funcionar.
Matthew puedes verificar si el atributo de estilo no está definido o no
var attr = $(this).attr(''style'');
if (typeof attr !== ''undefined'' ) {
}
Utilice .attr
para comprobar el atributo de style
.
if(base.$element.attr(''style'').length > 0) {
//...
}
Si te importa el ancho, entonces
if(base.$element.attr(''style'').indexOf(''width'') !== -1) {
//...
}