jQuery - Sınıf yerine ID ekle


99

Mevcut jQuery'yi kullanıyorum :

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

Kırıntıda tutulan metni sayfadaki 4 öğeye uygulayarak özellikle oradaki sayfaya stil vermeme izin veriyor.

Sınıf yerine kimlik eklemeyi denemek istiyorum, bunu nasıl başarabilirim?


Bir kimliğin geçerli XHTML olması için benzersiz olması gerekir. Bir kimlik daha sıkı kurallarla eşleşmelidir, örneğin boşluk olmamalı, harf veya _ ile başlamalı, yalnızca harf, rakam veya sınırlı sayıda başka karakter içermelidir.
Doug Domeny

7
@Peter: Wikipedia'ya bir bağlantı eklemek biraz gereksiz görünüyor.
nickf


Yanıtlar:


232

Bunu dene:

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

Böylece;

$(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());
    });
});

Dolayısıyla, üç öğenin kimliğini değiştiriyor / üzerine yazıyorsunuz ve bir öğeye bir kimlik ekliyorsunuz. İhtiyaçlarınıza göre değişiklik yapabilirsiniz ...


1
Önbelleğe almaya ne dersiniz? "This" den 4 farklı jQuery nesnesi yapmak yerine. var text = $ (bu) .text ();
PetersenDidIt

@petersendidt: Katılıyorum, cevabımda ihtiyaca göre değişiklik yapması gerektiğini söyledim.
Sarfraz

daha da iyisi: $('#nav, #container, .stretch_footer, #footer').attr('id', $(this).text());.. burada bir kimlik kullanmak iyi bir fikir değildir.
nickf

Bu yalnızca bir kez çalışır, ardından kimlik değişir ... ayrıca, aynı kimlikleri geçersiz kılmaya devam edersiniz, böylece bunu $('#nav, #container, .stretch_footer, #footer').attr('id', $('span .breadcrumb:first').text())(veya last, için .stretch_footer) yapabilirsiniz. Her neyse, bu garip.
Kobi

27

Bunun, öğenin zaten sahip olduğu herhangi bir kimliğin üzerine yazdığını unutmayın:

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

Var olmasının nedeni addClass, bir elemanın birden fazla sınıfa sahip olabilmesidir, bu nedenle önceden ayarlanmış sınıfların mutlaka üzerine yazmak istemezsiniz. Ancak çoğu öznitelikte, herhangi bir anda yalnızca bir değere izin verilir.



3

Değiştirmek yerine 'kimliğe eklemek' istiyorsanız

önce mevcut kimliği yakalayın, ardından yeni kimliğinizi ekleyin. özellikle formlarında giriş durumlarını kullanan twitter bootstrap için kullanışlıdır.

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

yapmazsanız - önceden ayarladığınız tüm özellikleri kaybedersiniz.

hth,


Geçerli bir öğenin yalnızca tek bir kimliği olabilir. stackoverflow.com/questions/192048/…
Colonelclick

3

Bunu kahvede yapıyorum

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++
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.