jQuery:循环复选框并存储在数组中?

时间:2015-05-25 01:38:52

标签: jquery arrays checkbox

我有一个带有复选框的页面,当我点击一个按钮时,我试图遍历它们,检查是否有任何一个被检查,如果没有选中,我想显示一个警告。这就是我所拥有的,而且它无法正常工作。

$(document).ready(function() { 
    $('input#addnewwebsite').click(function() {
        $('input[type=checkbox]').each(function() {
            var categories = [];
            var $(this) = $(this);    
            if ($(this).is(':checked') == true) {
                categories.push($(this)); // checked, add to array
                break;
            }
            if (categories != null) {
                alert('You must select at least one category.');
                return false;
            }
        });
    });
});

2 个答案:

答案 0 :(得分:2)

您只需使用长度为self.addGestureRecognizer(tapGesture)的选择器。

:checked

为什么你的代码没有工作。

  • 您正在为每个复选框迭代初始化$('input#addnewwebsite').click(function() { var categories = $('input:checkbox:checked'); if(!categories.length){ alert('You must select at least one category.'); } })

答案 1 :(得分:0)

var categories = [];
$(document).ready(function() { 
    $('input#addnewwebsite').click(function() {
        $('input[type=checkbox]').each(function() {

            var $this = $(this);    
            if ( $this.is(':checked') == true) {
                categories.push( $this ); // checked, add to array
                break;
            }

            if (categories.length == 0 ) {
                alert('You must select at least one category.');
                return false;
            }
        });
    });
});

在您的代码中,categories数组需要在循环之外,因为它正在为每个复选框迭代重新初始化。 此外,您无需检查类别!= null ,而是检查数组的长度,如果 ZERO ,则需要提醒消息。 你已经分配了 var $(this)= $(this)这没有任何意义。而应该是 var $ this = $(this)或变量名称可以是任何东西。