propiedades name modificar data con cambiar atributos atributo asignar adicionar jquery html

name - jquery atributo id



¿Cómo puedo cambiar los nombres de los atributos HTML con jQuery? (5)

No creo que pueda "cambiar el nombre" de un atributo, pero puede crear nuevos atributos y eliminar otros ...

$(''a.testingCase[title]'').each(function() { var $t = $(this); $t .attr({ newTitleName : $t.attr(''title''), }) .removeAttr(''title'') ; });

Editar: agregado en el bit que hace que solo seleccione a elemento con class="testingCase"

Me gustaría cambiar todos los nombres de los atributos donde class="testingCase" en todo mi documento html completo.

por ejemplo, cambio:

<a class="testingCase" href="#" title="name of testing case">Blabla</a> <a class="testingCase" href="#" title="name of another testing case">Bloo</a>

A esto:

<a class="testingCase" href="#" newTitleName="name of testing case">Blabla</a>` <a class="testingCase" href="#" newTitleName="name of another testing case">Bloo</a>`

Estaba pensando en encontrar y reemplazar, pero parece que hay un montón de código para algo tan fácil. ¿Hay una función jQuery para esto o un método simple?


No creo que puedas cambiar el nombre de un atributo, pero lo que puedes hacer es:

  • obtener todas las etiquetas <a> con un atributo de título;
  • para todos ellos, cree un nuevo atributo Title con el mismo valor que el título;
  • luego borra el atributo de título.

JQuery te permite hacer eso con funciones integradas de esta manera:

/* get all <a> with a "title" attribute that are testingCase then apply an anonymous function on each of them */ $(''a.testingCase[title]'').each(function() { /* create a jquery object from the <a> DOM object */ var $a_with_title = $(this); /* add the new attribute with the title value */ $a_with_title.attr("newTitleName", $a_with_title.getAttribute(''title'')); /* remove the old attribute */ $a_with_title.removeAttr(''title''); });


Aquí hay un plugin de estilo jquery que le da un método renameAttr:

// Rename an entity attribute jQuery.fn.renameAttr = function(oldName, newName) { var args = arguments[0] || {}; var o = $(this[0]) o .attr( newName, o.attr(oldName) ) .removeAttr(oldName) ; };

También hay este ejemplo que agrega una opción para eliminar los datos del antiguo atributo.


Un poco más tarde, pero este enlace tiene una gran extensión de función jquery:

jQuery.fn.extend({   renameAttr: function( name, newName, removeData ) {     var val;     return this.each(function() {       val = jQuery.attr( this, name );       jQuery.attr( this, newName, val );       jQuery.removeAttr( this, name );       // remove original data       if (removeData !== false){         jQuery.removeData( this, name.replace(''data-'','''') );       }     });   } });

Ejemplo

// $(selector).renameAttr(original-attr, new-attr, removeData);   // removeData flag is true by default $(''#test'').renameAttr(''data-test'', ''data-new'' );   // removeData flag set to false will not remove the // .data("test") value $(''#test'').renameAttr(''data-test'', ''data-new'', false );

NO ESCRIBÍ ESTO. PERO HICE LA PRUEBA ES CON JQ 1.10. EL CÓDIGO ES DEL ENLACE.


Un trazador de líneas

$(''selector'').replaceWith($(''selector'')[0].outerHTML.replace("oldName=","newName="));

funcionó muy bien para mí cuando necesité quitar un prefijo de todos mis atributos

$(''selector'').replaceWith($(''selector'')[0].outerHTML.(/prefix/-/g,""));