2009-12-23 3 views
2

Как можно mootools 1.11 определить, содержит ли div какие-либо проверенные флажки?mootools 1.11 div содержит check checkbox

испробовали все виды вариаций, используя $ $$ $ E $ ES getElements и CSS селекторы, его просто не возвращает истину, если это ДИВ не содержит галочками

var ticked = $(sId).getElements('[checked=checked]'); 
if($chk(ticked)){alert('yo');}else{unticked = true;} 
+0

Добро пожаловать в StackOverflow! Большой первый вопрос. – Sampson

ответ

3

"проверено" является динамически назначаемый DOM свойство (который является логическим), и доступ к атрибуту возвращает только значение, которое было там, когда загружалась страница (или значение, которое вы указали при использовании setAttribute).
Кроме того, как MooTools 1.11 не имеют сложные селекторы (атрибуты не могут быть отфильтрованы непосредственно в $$) и функция filterByAttribute принимает только прямое сравнение строк, это ваш единственный (и лучше!) Вариант:

$(sId).getElements('input').filter(function(input) { 
    return /radio|checkbox/.test(input.getAttribute('type')) && input.checked; 
}) 

примечание: я добавил радио только для полноты, цикл фильтра должен быть запущен в любом случае, чтобы проверить статус проверки.

Если вы хотите, чтобы упростить этот процесс и иметь возможность повторно использовать код (MooTools путь), вы можете также смешать в проверяемом фильтре в элементы, как это:

Element.extend({ 
    getCheckedInputs: function() { 
     return this.getElements('input').filter(function(input) { 
      return /radio|checkbox/.test(input.getAttribute('type')) && input.checked; 
     }); 
    } 
}); 

, а затем ваш звонок выбора сокращен до:

$(sID).getCheckedInputs();