1

在我的 HTML 中,我有这样的东西

<input type="button" value="Delete" onclick="delete(this);"/>

在 JavaScript 文件中,我定义了我的函数“删除”,如下所示:

YUI().use('node', functioin(Y) {
   function delete(el){
       //Here is the problem
       el.get('parentNode');
   }
}

问题是,我想将“el”对象(这是一个普通的JavaScript对象)转换为YUI 3的一个节点,这样我就可以更方便地使用YUI 3的功能。而且我不知道该怎么做。

解决办法是什么?

4

1 回答 1

3

YUI 3 的Y.Node构造函数可以简单地接收一个 DOM 元素或选择器字符串并返回一个新Y.Node实例:

// returns a Y.Node instance wrapping a div DOM element
var node = new Y.Node(document.createElement('div'));

但是,首选方法是使用方便的Y.one工厂方法:

// returns a Y.Node instance wrapping a div DOM element
var node = Y.one(document.createElement('div'));

此外,YUI 3 有一个Y.NodeList代表Y.Node实例集合的类:

// returns a Y.NodeList representing all divs on the page
var divs = new Y.NodeList(document.getElementsByTagName('div'));

// or using the convenient Y.all NodeList factory method:
divs = Y.all(document.getElementsByTagName('div'));

// …and finally the preferred way to do this using a selector string:
divs = Y.all('div');

一般来说,使用Y.one和分别Y.all重新运行一个Y.NodeY.NodeList实例;这就是您将如何看到编写的 YUI 3 代码以及所有示例将使用的内容。

对于您想要删除已经拥有引用的 DOM 元素的特定用例,您可以使用 YUI 3 的Y.Node类执行以下操作:

// assumes el is a DOM element reference
Y.one(el).remove();
于 2011-02-05T18:23:19.207 回答