2011-01-24 63 views
1

我試圖解析JSON數據到一個類名「slide_content」靶向類的名字反覆用JS

的具體迭代來得到這樣的:

slide_content[0] 

但JS不提供getElementByClass()選擇器。

有問題的API數據是在這裏: Converting Straight JS to JQuery

乾杯! Myles

+0

在文檔中,「id」值確實需要是唯一的。因此,當您動態地添加內容時,您應該不給元素「id」值(而是使用「class」值),否則將合併唯一的「id」值。 – Pointy 2011-01-24 18:34:52

+0

如果我給他們類的價值,那麼我不能直接針對他們作爲一些奇怪的原因JS支持getElementByID但不getElementByClass ...我需要他們都有相同的類爲了使選項卡滑塊功能,從而意味着類的用法名稱,但類名不能通過JS API進行定位。 – 2011-01-24 18:37:47

回答

1

使用jQuery。它允許您使用$('.someClass')來檢索具有給定類名稱的所有元素。

如果因爲某些原因無法使用jQuery或其他JS庫,只需使用jQuery也使用的Sizzle選擇器引擎 - 它不是很多代碼,因此您甚至可以將其複製粘貼到項目的一個JS文件中(但不要那樣做,這很醜陋:p)。但既然你用jQuery標記你的問題,我想你可以使用jQuery ...

2

新版瀏覽器(IE9及以上)have supportdocument.getElementsByClassName(具有諷刺意味意味着它具有比querySelectorAll的支持較少,但我離題...) ,但這可能不會滿足您的兼容性需求。在這種情況下,你可以使用類似的東西來獲得一個帶有類的節點數組。

var nodes = document.getElementsByTagName('*'), 
    targetClass = 'myclass', 
    result = []; 

for(var i = 0, l = nodes.length; i < l; i++){ 
    if((nodes[i].className + ' ').indexOf(targetClass + ' ') !== -1){ 
     result.push(nodes[i]); 
    } 
} 

這不是getElementsByClassName確切重複的,因爲該函數返回一個NodeList,但它應該是對大多數來說已經足夠接近。