2011-06-06 34 views
1

我想遍歷DOM並確定某些節點的HTML屬性。例如所有標籤的類值。使用jQuery來遍歷DOM,從節點返回HTML屬性

下面的代碼是通過#1的另一個成員行走的DOM提示:http://jsfiddle.net/FJeaY/

它工作得很好,我可以用它來識別節點的ID和它的父母。它也很容易篩選的超鏈接:

walk_the_DOM(document.body, function(node) { 
    if(node.nodeName == "A") 
     alert(node.nodeName + ' id: ' + node.id); 
}); 

但是我不能確定使用什麼標識類(或任何其他HTML屬性)。我迄今爲止搜索jQuery文檔的所有內容都失敗了。

任何想法讚賞,謝謝你提前。

+0

你試過'node.className'嗎? – Mic 2011-06-06 07:20:55

回答

2

有問題的函數實際上根本不使用jQuery,jQuery文檔不適合通常學習DOM。

看看MDC HTMLElement reference。你想要的是className attribute

walk_the_DOM(document.body, function(node) { 
    if(node.nodeName == "A") { 
     alert(node.nodeName + ' class: ' + node.className); 
    } 
}); 
+0

優秀。感謝您參考Felix的鏈接。你是完全正確的,我的基本代碼不是jQuery。我打算對每個節點做什麼都涉及到jQuery,我設法讓自己感到困惑。 – BaronGrivet 2011-06-09 08:58:07

+0

@Tama:那麼,如果你打算使用jQuery,那麼你可以這樣做:'$('a')。each(function(){/ * do you stuff here * /)'。這可能會更快,因爲如果可用,jQuery使用瀏覽器方法。 – 2011-06-09 09:25:07

1

.hasClass()可用於測試特定類是否屬於指定給元素的類。將返回true或false。

$(node).hasClass('myclass') 

或者您可以使用.attr()獲取元素的屬性class

var klassz=$(node).attr('class'); 

取而代之的是後者,你可以簡單地使用node.className無論是。

1

結帳http://jsfiddle.net/tahir/7gfuT/

此代碼是直接使用DOM(我只想澄清概念)。你可以使用bazmegakapa建議的jquery wrapper函數來簡化對DOM屬性的訪問

+0

謝謝塔希爾,也非常有幫助。 – BaronGrivet 2011-06-09 08:58:35

+0

不客氣。點擊除了向上的答案之外的小三角是在StackOverflow上表示感謝的另一種方式;) – 2011-06-09 12:23:16