MooTools использует grab / inject для добавления дочерних элементов - PullRequest
1 голос
/ 30 сентября 2011

Как мне добавить новый элемент в другой?Приведенный ниже код использует примеры на сайте библиотеки, но ничего не отображается.Я проверил содержащий Элемент с помощью .innerHTML, который делает рендеринг.что я делаю не так?

var Article = new Class({
  initialize: function(order, title, body){
    this.order = order;
    this.title = title;
    this.body = body;
  }
});

window.addEvent("domready", function() {

  var Content = new Hash();

  Content.set("dbitem15", new Article(1, "title1", "content1"));
  Content.set("dbitem33", new Article(2, "title2", "content2"));

  Hash.each(Content, function(value, key){

    var article_title = new Element("div", {id: "title" + key});
    article_title.set("class", "article_title");
    article_title.innerHTML = value.title;

    var article_content = new Element("div", {id: "content" + key});
    article_content.set("class", "article_content");
    article_content.innerHTML = value.body;

    var article = new Element("div", {id: key});
    article.set("class", "article");

    article.inject(article_title, "after");
    article.inject(article_content, "after");
    //article.grab(article_title, "after");
    //article.grab(article_content, "after");
    //article.innerHTML = key;

    $("plan").grab(article,"after");
  });

});

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Вот некоторый (переработанный) код, который работает: http://jsfiddle.net/mqchen/kJqLf/1/

Основное отличие заключается в следующем:

article.grab(article_title, "bottom");
article.grab(article_content, "bottom");

Проблема заключалась в том, что вы использовали inject(..., after), что означает, что выдобавленные созданные элементы (title, content) после элемента article, что означает, что когда вы позже поместите элемент article в элемент plan, элементы title и content не были добавлены (они находятся где-то в пустом пространстве),Вам нужно поместить элементы title и content в элемент article, используя grab(..., bottom).

1 голос
/ 03 октября 2011

Если я неправильно читаю код, вы пытаетесь вставить article_title и article_content в article, да?:

article.inject(article_title, "after");
article.inject(article_content, "after");

В этом случае вы переключили элементы. .inject() ссылается на элемент для инъекции , а первый параметр - для элемента контейнера.

Так попробуйте:

article_title.inject(article, "after");
article_content.inject(article, "after");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...