2010-02-01 22 views
67

estoy usando la corriente jQuery:jQuery - Añadir ID en lugar de clase

$(function() { 
    $('span .breadcrumb').each(function(){ 
     $('#nav').addClass($(this).text()); 
     $('#container').addClass($(this).text()); 
     $('.stretch_footer').addClass($(this).text()) 
     $('#footer').addClass($(this).text()); 
    }); 
}); 

Se aplica el texto que tuvo lugar en la ruta de exploración a 4 elementos de la página, lo que me permite Estilo específicamente a la página de allí en .

Me gustaría intentar agregar una ID en lugar de una clase, ¿cómo puedo lograrlo?

+0

Un ID debe ser único para XHTML. Una ID debe coincidir con reglas más estrictas, por ejemplo, sin espacios, comenzar con letra o _, solo contener letras, números o un número limitado de otros caracteres. –

+7

@Peter: agregar un enlace a wikipedia parece un poco redundante. – nickf

Respuesta

167

Prueba esto:

$('element').attr('id', 'value'); 

Por lo tanto, se convierte;

$(function() { 
    $('span .breadcrumb').each(function(){ 
     $('#nav').attr('id', $(this).text()); 
     $('#container').attr('id', $(this).text()); 
     $('.stretch_footer').attr('id', $(this).text()) 
     $('#footer').attr('id', $(this).text()); 
    }); 
}); 

Así que están cambiando/sobrescribir el ID de tres elementos y la adición de un identificador a un elemento. Puede modificar según usted necesita ...

+1

¿Qué tal el almacenamiento en caché? En lugar de hacer 4 objetos jQuery diferentes de "esto". var text = $ (this) .text(); – PetersenDidIt

+0

@petersendidt: acepté, dije en mi respuesta, que necesita modificar según las necesidades. – Sarfraz

+0

aún mejor: '$ ('# nav, #container, .stretch_footer, #footer'). Attr ('id', $ (this) .text());' ... no es que usar una ID aquí sea una buena idea. – nickf

6
$('selector').attr('id', 'yourId'); 
18

Tenga en cuenta que esto sobrescribe cualquier identificación que el elemento ya tiene:

$(".element").attr("id","SomeID"); 

La razón por la addClass existe es debido a que un elemento puede tener varias clases de modo, no querrás sobrescribir necesariamente las clases ya establecidas. Pero con la mayoría de los atributos, solo se permite un valor en un momento dado.

4

si quieren 'añadir a la id' en lugar de reemplazarlo

captura el ID actual primero, tiene que poner su nueva identificación. especialmente útil para Twitter bootstrap que usa estados de entrada en sus formularios.

new_id = '{{old_id}} inputSuccess'; 
    old_id = that.attr('id'); 
    that.attr('id', new_id.replace(/{{old_id}}/ig,old_id)); 

si no lo hace, perderá las propiedades que estableció anteriormente.

HTH,

3

estoy haciendo esto en CoffeeScript

booking_module_time_clock_convert_id =() -> 
    if $('.booking_module_time_clock').length 
    idnumber = 1 
    for a in $('.booking_module_time_clock') 
     elementID = $(a).attr("id") 
     $(a).attr('id', "#{elementID}_#{idnumber}") 
     idnumber++