Multi заменить имя элемента на mootools - PullRequest
3 голосов
/ 11 октября 2011

есть ли в moo эквивалент, который может заменить несколько имен идентификаторов элементов

у меня есть это

    $$('myelement').each(function(el){ 
            var get_all_labels = el.getElements('label');/
            var get_label_id = get_all_labels.getProperty('id');
            el.addClass(get_label_id);

        });

, но метки mu (labael_name) возвращают дополнительный суффикс, например -elem ,, и мне нужно удалить -elem ,, из нового созданного имени родительского класса.Я проверил замену, но, вероятно, в неправильном месте, она возвращает замену не является функцией, также проверил пользовательский string_replace для js, но мне не повезло с этим, пожалуйста, любую подсказку.Thnx!

1 Ответ

2 голосов
/ 11 октября 2011

это несколько неправильно.

var get_all_labels = el.getElements('label'); - возвращает коллекцию

var get_label_id = get_all_labels.getProperty('id'); - возвращает массив идентификаторов.

так что, если у вас есть один ярлык, он пойдет:

[labelObject#someid-elem], который затем вернет ["someid-elem"]

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

если у вас есть более 1 метки и вам нужно добавить их все как классы в цикл, который вы делаете, вы можете сделать

$$('myelement').each(function(el) {
    var get_all_labels = el.getElements('label');

    // get all ids and replace them... use .get for 1.2+ or .getProperty for 1.11
    var get_label_ids = get_all_labels.map(function(label) {
        return label.getProperty("id").replace("-elem", "");
    });

    // add to parent element.
    el.addClass(get_label_ids.join(" "));
    console.log(el);
});

если это не намеченное поведение и у вас фактически есть одна метка, тогда просто сделайте

$$('myelement').each(function(el) {
    var id = el.getElement('label').get("id").replace("-elem", "")
    el.addClass(id);
    console.log(el);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...