MooTools - реализовать метод элемента - PullRequest
1 голос
/ 01 мая 2011
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 ]

1 голос
/ 01 мая 2011

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()
0 голосов
/ 01 мая 2011

Оба способа прекрасно работают с элементом, доказательство: http://jsfiddle.net/SuJn6/

Полагаю, вы ошибаетесь, если ваш el на самом деле является коллекцией элементов, а не отдельным элементом.В этом случае вам нужно зациклить ваш первый массив, и только потом использовать parentNode, например: http://jsfiddle.net/35Fxf/

Pro-tip: осторожно присваивайте имя переменной, el и els - все делаетогромная разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...