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。
答案 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/
专业提示:仔细命名您的变量el
和els
- 所有这些都会产生巨大的差异。