valor obtener con cambiar boton atributos atributo agregar javascript jquery

javascript - cambiar - obtener el valor de un id con jquery



Selectores de atributos jQuery: cómo consultar un atributo con un espacio de nombres personalizado (5)

Supongamos que tengo un documento XHTML simple que utiliza un espacio de nombre personalizado para los atributos:

<html xmlns="..." xmlns:custom="http://www.example.com/ns"> ... <div class="foo" custom:attr="bla"/> ... </html>

¿Cómo puedo unir cada elemento que tiene un determinado atributo personalizado usando jQuery? Utilizando

$("div[custom:attr]")

No funciona. (Intenté solo con Firefox, hasta ahora).


Aquí hay una implementación de un selector personalizado que funciona para mí.

// Custom jQuery selector to select on custom namespaced attributes $.expr['':''].nsAttr = function(obj, index, meta, stack) { // if the parameter isn''t a string, the selector is invalid, // so always return false. if ( typeof meta[3] != ''string'' ) return false; // if the parameter doesn''t have an ''='' character in it, // assume it is an attribute name with no value, // and match all elements that have only that attribute name. if ( meta[3].indexOf(''='') == -1 ) { var val = $(obj).attr(meta[3]); return (typeof val !== ''undefined'' && val !== false); } // if the parameter does contain an ''='' character, // we should only match elements that have an attribute // with a matching name and value. else { // split the parameter into name/value pairs var arr = meta[3].split(''='', 2); var attrName = arr[0]; var attrValue = arr[1]; // if the current object has an attribute matching the specified // name & value, include it in our selection. return ( $(obj).attr(attrName) == attrValue ); } };

Ejemplo de uso:

// Show all divs where the custom attribute matches both name and value. $(''div:nsAttr(MyNameSpace:customAttr=someValue)'').show(); // Show all divs that have the custom attribute, regardless of its value. $(''div:nsAttr(MyNameSpace:customAttr)'').show();





jQuery no admite espacios de nombres personalizados directamente, pero puede encontrar los divs que está buscando mediante el uso de la función de filtro.

// find all divs that have custom:attr $(''div'').filter(function() { return $(this).attr(''custom:attr''); }).each(function() { // matched a div with custom::attr $(this).html(''I was found.''); });