1

私のHTMLには次のようなものがあります

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

JavaScriptファイルで、関数「delete」を次のように定義します。

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

問題は、「el」オブジェクト(通常のJavaScriptオブジェクト)をYUI 3のノードに変換して、YUI3の機能をより便利に使用できるようにすることです。そして、私はそれを行う方法がわかりません。

解決策は何ですか?

4

1 に答える 1

3

YUI 3のコンストラクターは、DOM要素またはセレクター文字列を取り込んで新しいインスタンスY.Nodeを返すだけです。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再実行します。これは、YUI 3コードが記述されていることを確認する方法であり、すべての例で使用されます。Y.NodeY.NodeList

すでに参照を保持しているDOM要素を削除したいという特定のユースケースでは、YUI3のY.Nodeクラスを使用して次のようにすることができます。

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