En este caso, creo que los atributos personalizados pueden ser excesivos. Puede almacenar el ID de usuario en el id -attribute, ya que solo habrá una instancia del usuario en la lista, ¿verdad? Además, el estado del usuario se puede almacenar en la clase -attribute. De esta forma, a cada usuario se le puede dar un estilo diferente en CSS, como verde para activo, amarillo para una cuenta no activada y rojo para una cuenta suspendida.
El código para obtener el estado, sin embargo, será un poco más complejo en comparación con el uso de un atributo personalizado (pero solo si también desea tener múltiples clases). En una nota más positiva, el HTML se validará con este enfoque, mientras que no lo haría con los atributos personalizados.
<ul id="userList">
<li id="uid123" class="active">UserName X</li>
<li id="uid456" class="suspended">Mr. Troll</li>
</ul>
/**
* Simple function for searching (strict) for a value in an array
* @param array arr The array to look in
* @param mixed val The value to look for in arr. Note that the value is looked for using strict comparison
* @return boolean true if val is found in arr, else false
*/
function searchArray(arr, val) {
for(var i = 0, len = arr.length; i < len; i++) {
if(arr[i] === val) {
return true;
}
}
return false;
}
/**
* Gets a known status from a string of class names. Each class name should be separated
* by a space.
* @param string classNames The string to check for a known status
* @return string|false The status if found in classNames, else false
*/
function getStatus(classNames) {
// The different statuses a user can have. Change this into your own!
var statuses = ['active', 'suspended', 'inactive'],
nameArr = classNames.split(" ");
for(var i = 0, nameLen = nameArr.length; i < nameLen; i++) {
// If we find a valid status among the class names, return it
if(searchArray(statuses, nameArr[i])) {
return nameArr[i];
}
}
return false; // We didn't find any known status in classNames
}
var id = $("li").attr("id"); // Fetches the id for the first user
var status = getStatus($("li").attr("class")); // Fetches the status of the first user
atributos personalizados trabajo, pero no son compatibles con XHTML –
Sí, pero cuando se llega a esto, lo que es más deseable - algo que funciona, y es bastante rápida, o algo que es ¿obediente? – Kazar
@activa y @Kazar ¿Por qué no cumplir y desear con el complemento de metadatos? –