MooTools - 实现元素方法

时间:2011-05-01 05:42:23

标签: mootools

var parent = el.getParent();

parent.getElement('div[class=test]'); // return array

var parent1 = el.parentNode;

parent1.getElement('div[class=test]'); // error getElement is not a function

似乎parent1没有MooTools的所有元素方法,如何扩展parent1的所有元素方法,如page

注意:我必须使用parentNode。

2 个答案:

答案 0 :(得分:1)

parent.getElement('div[class=test]');

应该是

parent.getElement("div.test");

element.getParent()element.parentNode之间存在重大差异 - 它归结为Element原型,无法在旧版本的IE中进行扩展。

mootools通过直接在元素上保存对方法的引用而不是属性来解决这个问题。

因此,如果您执行element.getParent()并返回element,则会将其扩展为包含所有原型。 element.parentNode返回一个简单的元素对象,该对象可以在正确继承Element.prototype的浏览器中使用。

您可以通过执行以下操作使第二种方法在IE中起作用:

var parent1 = el.parentNode;
$(parent1).getElement("div.test");

对parent1的后续引用不需要$(或document.id),因为元素已经被扩展。

总结答案:

要扩展元素,您需要通过选择器运行它。

var parent = el.parentNode;
$(parent); // this extends it.

parent.getElements("div.test").something()

答案 1 :(得分:0)

两种方式在元素上运行得很好,证明:http://jsfiddle.net/SuJn6/

我认为你做错了是你的el实际上是一个元素集合,而不是一个元素。在这种情况下,您需要循环第一个数组,然后才使用parentNode,例如:http://jsfiddle.net/35Fxf/

专业提示:仔细命名您的变量elels - 所有这些都会产生巨大的差异。