Следующий код 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();
}
});