Оберните новый div вокруг нескольких элементов (Mootools1.2) - PullRequest
1 голос
/ 03 сентября 2011

Я недавно начал работать на работе, где они используют Mootools 1.2 для своего сайта.Я делаю несколько новых объектов для их внутренней CMS-системы и столкнулся с некоторыми проблемами.

Система выпускает этот код для объекта.

<div class="object_start">Title</div>
<div class="normaltext">Blahahahahaha</div>
<div class="normaltext">More text</div>
<div class="singlebox">Some content</div>
<div class="object_end></div>

Мне нужно обернуть divвокруг этого .... через javascript.

Поскольку этот объект должен присутствовать на сайте более одного раза, я начал с чего-то вроде

function apply_drop() {
  $$('.object_start').each(make_drop_tab_group_of_tab);
}

window.addEvent('domready', apply_drop);

, чтобы начать работучерез каждый экземпляр, где присутствует элемент с object_start.

По сути, я хотел бы пройти через каждый элемент из object_start, пока он не достигнет div с классом object_end, а затем обернуть вокруг него новый div, но я просто не могукажется, все правильно.

Кто-нибудь может дать небольшой указатель, как легко это сделать?Мне действительно не нужно ничего трансформировать, просто добавьте обертку.

/ Björn

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

в вашем доме:

document.getElements("div.object_start").each(function(el) {
    var wrapper = new Element("div", {
        "class": "wrap"
    }), end = false, next;

    while(!end) {
        next = el.getNext(); // siblings
        if (!next || next.hasClass("object_end")) end = true;
        if (next) next.inject(wrapper); // will work if no object_end found gracefully.
    }

    // done finding siblings, now replace the orig div.
    wrapper.wraps(el, "top");
});

http://jsfiddle.net/w4brx/

1 голос
/ 04 сентября 2011

Документация MooTools - ваш друг.Для этого я использую wraps() и grab():

function apply_drop() {
    var beginWrapping = false, wrapper;
    // iterate over all divs
    $$('div').each(function(item){
        // if .object_start, wrap it in a div with class .wrapper
        // and then start wrapping all elements until we hit
        // a div with class .object_end
        if (item.hasClass('object_start')){
            wrapper = new Element('div').addClass('wrapper').wraps(item);
            beginWrapping = true;
        } else if (beginWrapping) {
            wrapper.grab(item);
        }
        if (item.hasClass('object_end')) {
            beginWrapping = false;
        }
    });

}
window.addEvent('domready', apply_drop);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...