2009-07-09 71 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]处的元素)。如果我要从阵列的前面开始,我会错过元素,并且很快超过阵列的边界。