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();
mira aquí http://pastebin.me/48d233d998b4b
básicamente es $ (''div''). attr (''custom: attr'')
Esto funciona en algunas condiciones:
$("div[custom//:attr]")
Sin embargo, para un método más avanzado, consulte este complemento jQuery de espacio de nombres XML
la sintaxis para emparejar por atributo es:
$ ("div [customattr = bla]") coincide con --div customattr = "bla" -
$ ("[customattr]") coincide con todas las etiquetas con el atributo "customattr"
con atributos de espacio de nombres como ''custom: attr'' no funciona
Aquí puede encontrar una buena descripción general: http://www.pamaya.com/jquery-selectors-and-attribute-selectors-reference-and-examples/
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.'');
});