JS код для замены флажка и закрытия - PullRequest
0 голосов
/ 10 мая 2011

Следующий код javascript (прототип 1.6) скрывает все флажки на странице и вставляет элемент div с некоторым стилем CSS и событием click, действующим как поддельный флажок.Он также ищет метку рядом с (или предыдущим) флажком, чтобы также инициировать то же событие.

Когда я щелкаю сам div (fake_el), все работает как положено, но когда я пытаюсь сделать то же самое слейбл, он работает только один раз.после этого el не изменится - как будто это (el) будет значением-параметром.

Есть идеи?

    $$('input[type=checkbox]').each(function(el) {
        if (el.visible()) {
            var fake_el = new Element('div', { className:'checkbox checkbox_' + el.checked });
            var label = (el.next() != null && el.next().tagName === 'LABEL' && el.next().readAttribute('for') === el.id) ? el.next() : undefined;
            label = (el.previous() != null && el.previous().tagName === 'LABEL' && el.previous().readAttribute('for') === el.id) ? el.previous() : label;
            var action = function(el) {
                el.checked = (el.checked) ? false : true;
                fake_el.className = 'checkbox checkbox_' + el.checked;
            }

            fake_el.observe('click', function() { action(el); });
            if (label != null) { label.observe('click', function() { c.log(el); action(el); c.log(el); }); }
            el.insert({ after:fake_el }).hide();
        }
    });

1 Ответ

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

Я изменил пару элементов и создал jsFiddle для этого.Прежде всего, c.log нужно было изменить на console.log, чтобы оно работало на меня :).После этого я изменил только то, как были добавлены div, так как он не работал для меня с insert.Я настроил некоторые тестовые данные, и я пошел ...

РЕДАКТИРОВАТЬ: Возможно, у вас нет тега без метки между двумя флажками, и это запутывается?Обратите внимание, у меня есть br между label и следующим флажком, возможно, вам нужно сделать что-то подобное.

...