Este es un viejo, pero gracias a la respuesta de Jonathan Del Strother, me hizo pensar en cómo redondear esto un poco más:
(function($){
// Add commonly used regex to the jQuery object
var regex = {
digits: /^(-?\d+(?:\.\d+)?)([a-zA-Z]+)?$/
,expr: /^([\w-]+)\s*([:=<>])\s*([\w-\.]+(?:\([^\)]+\))?)$/
};
// Create a custom jQuery function that allows a bit more useful CSS extraction
$.fn.extend({
cssExtract: function(cssAttr) {
var val = {prop:this.css(cssAttr)};
if (typeof val.prop === "string") {
var match = regex.digits.exec(val.prop);
if (match) {
val.int = Number(match[1]);
val.metric = match[2] || "px"
}
}
return val;
}
});
// Create the custom style selector
$.find.selectors[":"].style = function(el, pos, match) {
var search = regex.expr.exec(match[3]);
if (search) {
var style = search[1]
,operator = search[2]
,val = search[3]
,target = $(el).cssExtract(style)
,compare = (function(result){
if (result) {
return {
int: Number(result[1])
,metric: result[2] || "px"
};
}
return null;
})(regex.digits.exec(val));
if (
target.metric
&& compare && compare.metric
&& target.metric === compare.metric
) {
if (operator === "=" || operator === ":") {
return target.int === compare.int;
} else if (operator === "<") {
return target.int < compare.int;
} else if (operator === ">") {
return target.int > compare.int;
}
} else if (target.prop && (operator === "=" || operator === ":")) {
return target.prop === val;
}
}
return false;
};
})(jQuery);
Ahora debería poder consultar fácilmente con el selector personalizado style
de la siguiente manera:
$("div:style(height=57)")
En el momento de esta respuesta, debe devolver los elementos div principales de Desbordamiento de pila (esta página).
Algo como esto va a trabajar incluso:
$("h3:style(color:rgb(106, 115, 124))")
Trate de añadir el código en las herramientas de desarrollo en su navegador. Lo probé en Chrome. No lo he probado en otros. Tampoco invertí demasiado trabajo en investigar otras bibliotecas/plugins preexistentes.
No existe dicho selector –