2

mootools 1.11 如何确定 div 是否包含任何选中的复选框?

使用 $ $$ $E $ES getElements 和 css 选择器尝试了各种变体,如果此 div 不包含复选框,它只是不返回 true

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

3 回答 3

3

“checked”是一个动态分配的 DOM 属性(它是一个布尔值),并且访问该属性仅返回页面加载时存在的值(或您在使用 setAttribute 时放置的值)。
此外,由于 MooTools 1.11 没有复杂的选择器(属性不能在 $$ 中直接过滤)并且 filterByAttribute 函数只接受直接的字符串比较,这是您唯一(也是最好的!)选项:

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

注意:我添加收音机只是为了完整性,无论如何都必须运行过滤器循环以验证检查状态。

如果您想简化流程并能够重用代码(MooTools 方式),您还可以将选中的过滤器混合到 Elements 中,如下所示:

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

然后您的选择电话减少为:

$(sID).getCheckedInputs();
于 2010-07-28T18:27:53.043 回答
0

文档

$(sId).getElements("input:checked");
于 2009-12-23T02:02:12.430 回答
-1

1.1

console.log( $('id').getProperty('checked') );
于 2010-01-22T16:54:21.403 回答