Как сделать базовые манипуляции с DOM (очистить контент, добавить к контенту) с помощью YUI? - PullRequest
0 голосов
/ 09 июля 2009

Я делаю проект с YUI, где я пытаюсь делать то, что ранее делал с jQuery. Мне трудно выполнять некоторые основные операции, а именно:

  1. очистить содержимое элемента DOM
  2. добавить к содержимому элемента DOM

В jQuery я бы сделал:

$(".someSelector").empty().append("<div>something</div>");

Как это сделать в YUI? Похоже, что это во многом зависит от спецификации W3C DOM, я не очень знаком с этой спецификацией. Если есть какой-либо конкретный W3C или такой материал, который я должен использовать, пожалуйста, дайте конкретные ссылки.

Ответы [ 2 ]

3 голосов
/ 13 июля 2009

YUI, похоже, не обеспечивает такой же уровень манипулирования DOM, как jQuery (хотя я еще не играл с YUI3, так что это может измениться).

innerHTML определенно работает и когда-то был быстрее, хотя я думаю, что это меняется в некоторых современных браузерах. Добавление контента достаточно просто с помощью стандартных методов:

element.appendChild(childElement);

Очистка немного сложнее. Я фактически закончил расширение утилиты YUI DOM и добавил это как метод:

removeChildren : function(elem)
{
    var theElement = this.get(elem);
    var elemChildren = theElement.childNodes;
    var childCount = elemChildren.length;
    for (var i = childCount -1; i >= 0; i--)
    {
        theElement.removeChild(theElement.childNodes[i]);
    }
}

Важно отметить, что когда я зацикливаюсь на дочерних узлах, я начинаю с последнего элемента и иду вперед. Это связано с тем, что при удалении узла размер массива изменяется. Кроме того, если я удаляю узел в позиции [0], все элементы массива перемещаются вниз на позицию (то есть элемент, который был в позиции [1], теперь становится элементом в позиции [0]). Если бы я начал с начала массива, я бы пропустил элементы и быстро превысил границу массива.

3 голосов
/ 10 июля 2009

Вот документация YUI для методов Dom.
Yahoo! UI Library> dom> YAHOO.util.Dom
Или попробуйте

YAHOO.util.Dom.get("somediv").innerHTML("<div>something</div>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...