2010-02-01 10 views
67

ich die aktuellen jQuery mit:jQuery - Add-ID statt Klasse

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

Es den Text in der Brotkrume zu 4 Elementen auf der Seite gehalten gilt, so dass ich dort speziell auf der Seite, um Stil auf .

Ich möchte versuchen, eine ID anstelle einer Klasse hinzuzufügen, wie kann ich das erreichen?

+0

Eine ID muss eindeutig sein gültiges XHTML sein. Eine ID muss strengeren Regeln entsprechen, z. B. keine Leerzeichen, beginnen mit Buchstaben oder _, enthalten nur Buchstaben, Zahlen oder eine begrenzte Anzahl anderer Zeichen. –

+7

@Peter: Hinzufügen eines Links zu Wikipedia scheint ein wenig überflüssig. – nickf

Antwort

167

Try this:

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

So wird es;

So ändern/überschreiben Sie die ID von drei Elementen und fügen eine ID zu einem Element hinzu. Sie können so modifizieren pro braucht Sie ...

+1

Wie wäre es mit Caching? Anstatt 4 verschiedene jQuery-Objekte von "this" zu erstellen. var text = $ (this) .text(); – PetersenDidIt

+0

@petersendidt: einverstanden, ich sagte in meiner Antwort, dass er nach Bedarf ändern muss. – Sarfraz

+0

noch besser: '$ ('# nav, #container, .stretch_footer, #footer') .attr ('id', $ (this) .text());' .. nicht, dass hier eine ID verwendet wird, ist gut Idee. – nickf

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

Denken Sie daran, überschreibt diese jede Kennung, das Element bereits:

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

Der Grund, warum addClass existiert, weil ein Element mehrere Klassen haben kann, so Sie möchten die bereits gesetzten Klassen nicht unbedingt überschreiben. Bei den meisten Attributen ist jedoch immer nur ein Wert zulässig.

4

wenn Sie wollen ‚auf die ID hinzufügen‘ und nicht ersetzen

Capture zuerst die aktuelle ID, dann wird Ihre neue ID anhängen. besonders nützlich für Twitter-Bootstrap, die Eingabezustände in ihren Formularen verwendet.

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

Wenn Sie dies nicht tun - Sie werden alle Eigenschaften verlieren, die Sie zuvor festgelegt haben.

hth,

3

Im dies in Coffeescript tun

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++