2016-04-13 13 views
0

Her bir td sınıfının adını almaya çalışıyorum ve daha sonra her bir td'a başka bir sınıf eklemeye çalışıyorum. Örneğin: Geçerli sınıf class = "X-marker" ve başka bir sınıf bgreen eklemek istiyorum ve class = "X-marker bgreen" olmalıdır.jQuery'yi kullanarak nesne özelliğinin bir dizi listesine sınıf adı nasıl eklenir?

Her bir td sınıfının adını almak için each yöntemini kullandım ve her ayarlamak için attr kullandım ancak çalışmıyor. Herhangi bir hata almıyorum ama beklendiği gibi çalışmıyor.

nesne winInfo denilen ve dizi değişkendir edilir: Eğer addClass() aradığınız gibi winInfo.play = winArray[i];

var winInfo = checkWin(); 
if (winInfo.win) { 
    currentClass = $(winInfo.play).each(function() { 
     $(this).attr('class'); 
    }); 

    $(winInfo.play).each(function() { 
     $(this).attr('class', currentClass + ' bgreen'); 
    }); 
} 

cevap

2

geliyor.

şuna benzer olabilir:

@Hatchet tarafından belirtildiği gibi
$(winInfo.play).addClass('bgreen'); 
+0

Yani, dizi listesi için 'her 'yöntemini kullanmam gerekmez. –

+0

@MaihanNijat Doğru anlamıyorsam, yapmamalısın. Dokümanlar şunu söylüyor: 'Eşleşen öğeler kümesindeki her öğeye belirtilen sınıfı (ları) ekler. ' – Hatchet

+0

Ayarınız şu anki Sınıfınız bana gerçekten bir anlam ifade etmiyor. Gönderinizden, TD öğelerinin bir listesi üzerinde döngü oluşturmaya ve onlara bir sınıf eklemeye çalıştığınız anlaşılıyor. Eminim neden sadece $ ('X-marker') yapmazsınız, her (function() {$ (this) .addClass ('bgreen');}); ya da konuyu daha ayrıntılı olarak açıklamaya veya jsfiddle sağlamaya çalışabilirdiniz. – user3333134

1

, yöntem addClass bunu yapmanın en kolay yolu açıkça. Ancak, ve each nasıl çalıştığını yanlış anlaşılıyor gibi görünüyor, burada each kullanarak ve addClass olmadan nasıl yapabilirsiniz.

winInfo.play'un uygun bir dom seçici olduğunu (örneğin, ".class-name p") kabul ediyorum.

var winInfo = checkWin(); 
if (winInfo.win) { 
    // `each` is just a helper that will call the provided function 
    // for each of the object selected by jQuery (like a loop). 
    // It does not return any value. 
    $(winInfo.play).each(function() { 
     var currentClass = $(this).attr('class'); 
     $(this).attr('class', currentClass + ' bgreen'); 
    }); 
} 

Oh ve you might not need jQuery çünkü, burada düz js yapacağını nasıl.

var winInfo = checkWin(); 
if (winInfo.win) { 
    // if winInfo.play is not a selector but a list of dom elements, 
    // just remove document.querySelectorAll. 
    for(var el of document.querySelectorAll(winInfo.play)){ 
    el.classList.add('bggreen'); 
    } 
} 
İlgili konular