2009-07-09 74 views
0

我正在做一個YUI項目,我試圖做我以前一直用jQuery做的事情。我發現很難做一些基本的操作,並即:如何用YUI做基本的DOM操作(清除內容,附加到內容)?

  1. DOM元素的明確內容
  2. 追加到DOM元素的含量

在jQuery中,我會做:

$(".someSelector").empty().append("<div>something</div>"); 

如何在YUI中做到以上幾點?似乎它在很多方面都遵循W3C DOM規範,我對這個規範不是很熟悉。如果有任何特定的W3C或我應該使用的這種材料,請給出具體鏈接。

回答

3

這是Dom方法的YUI文檔。
Yahoo! UI Library > dom > YAHOO.util.Dom
或者嘗試

YAHOO.util.Dom.get("somediv").innerHTML("<div>something</div>"); 
+2

是的,看起來我只需要操作innerHTML。不知怎的,jQuery API感覺更優雅。 – Jaanus 2009-07-10 15:37:49

3

YUI似乎並沒有提供DOM操作是jQuery不會(雖然我還沒有與YUI3玩過沒,所以這可能會改變)的同一水平。

innerHTML絕對有效,而且曾經很快,儘管我認爲這在一些現代瀏覽器中正在發生變化。追加內容是通過標準方法很容易:

element.appendChild(childElement); 

結算是一個涉及多一點。其實我已經結束了延長YUI DOM工具,並將此作爲一種方法:

removeChildren : function(elem) 
{ 
    var theElement = this.get(elem); 
    var elemChildren = theElement.childNodes; 
    var childCount = elemChildren.length; 
    for (var i = childCount -1; i >= 0; i--) 
    { 
     theElement.removeChild(theElement.childNodes[i]); 
    } 
} 

重要的是要注意不是通過子節點循環的時候,我開始與最後一個元素和工作,我的方式向前方是很重要的。這是因爲每當一個節點被刪除時,數組的大小都會改變。另外,如果我刪除位置[0]處的節點,則數組中的所有元素向下移動一個位置(意味着位置[1]處的元素現在變成位置[0]處的元素)。如果我要從陣列的前面開始,我會錯過元素,並且很快超過陣列的邊界。