使用原型,是否有一种简单的方法来检查一组值是否匹配,例如-此代码可以细化为一行还是其他更精美的代码?

var val = null;
var fail = false;

$('form').select('.class').each(function(e){
    if(!val){
        val = $F(e);
    }else{
        if(val != $F(e)) fail = true;
    }
});

最佳答案

哦,这个单人应该做的:

$(form).select('.'+className).invoke('getValue').uniq().size()===1; // true means all values are the same


使用您要使用的类名从(输入/等)元素的值中组成一个数组(在一组选定的元素上运行invoke
使数组仅包含唯一值(在数组上调用uniq
查看其长度是否为1


链接到原型文档:Element.selectEnumerable#invokeForm.Element.getValueArray#uniq

例:

<body>

<form action="#" id="myform">
    <input type="text" name="foo1" class="foo" />
    <input type="text" name="foo2" class="foo" />
    <input type="text" name="foo3" class="foo" />
    <input type="text" name="foo4" class="foo" />
    <input type="text" name="foo5" class="foo" />
    <input type="submit" />
</form>

<script type="text/javascript">
// Returns true if all values of elements with a certain classname in the form has the same value
function bar(form, className) {
    return $(form).select('.'+className).invoke('getValue').uniq().size()===1;
}
// Usage: bar('myform', 'foo');
</script>
</body>

关于javascript - 使用原型(prototype)检查所有值是否匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2993413/

10-12 12:55
查看更多