Esta es una función que t determina si cualquiera de los elementos que coinciden con un selector tienen al menos un atributo:
function hasOneOrMoreAttributes(selector) {
var hasAttribute = false;
$(selector).each(function(index, element) {
if (element.attributes.length > 0) {
hasAttribute = true;
return false; // breaks out of the each once we find an attribute
}
});
return hasAttribute;
}
Uso:
if (hasOneOrMoreAttributes('.someClass')) {
// Do something
}
Si desea operar sobre los elementos seleccionados que tienen al menos un atributo, es aún más fácil - crear un filtro personalizado:
// Works on the latest versions of Firefox, IE, Safari, and Chrome
// But not IE 6 (for reasons I don't understand)
jQuery.expr[':'].hasAttributes = function(elem) {
return elem.attributes.length;
};
que se puede utilizar de esta manera:
$(document).ready(function(){
$('li:hasAttributes').addClass('superImportant');
}
Me pregunto si jQuery ofrece algo como '$ (" # a [*] ")'? –
@Naeem: Creo que podría ser una buena característica, pero como hay formas fáciles de resolver este problema, no creo que puedan agregarlo. – Tarik