JavaScript函数只选择第一个复选框时,告知预选更多


JavaScript function only selects first checkbox when told to pre-select more

我有一个JavaScript函数,当从选择框中选择某个值时动态创建复选框元素。为了验证复选框是否被选中,我从PHP发送了一个变量。

例如:var_id=1,2,3,5。我使用jQuery.inArray,但是我只选中了5个复选框中的第一个。

创建复选框列表的函数:

function outcheckboxes(_id, _text, var_id) {
  (function($){
    var topicContainer = jQuery('#classificationss_id');
    topicContainer.append(
        $('<li />')
        .addClass('checkboxclassid')
        .append(
            $('<input />', {
            id:      'classid' + _id,
            name:    'classid[]',
            value:   _id,
            type:    'checkbox',
            checked: !$.inArray(_id, var_id)
            })                                      
        )
        .append(
            $('<label />', {
            'for':  'classid' + _id
            }).text( _text)
            )
        )
    })(jQuery)
}

我从另一个函数中调用函数outcheckboxes:

function Classifications(obj_parent, obj_this, obj_child, var_id) {
        var catalog_id = jQuery("#"+obj_parent).selectedValues()[0];
        jQuery("#classificationss_id").children().remove();
        jQuery("#"+obj_this).children().remove();
        jQuery("#"+obj_child).children().remove();

        if(catalog_id>0){
            jQuery.ajax({
                type : "GET",
                url : "../index.php",
                data : "option=com_namecat&view=lists&format=raw&list=classifications&id=" + catalog_id,
                dataType : "xml",
                success : function(xml) {
                    var _id = "";
                    var _text = "";
                    jQuery(xml).find("row").each( function() {
                        _id = jQuery(this).find("id").text();
                        _text = jQuery(this).find("text").text();
                        jQuery("#"+obj_this).addOption(_id, _text );
                        outcheckboxes(_id,_text,var_id);
                    });
                }
            });
        }
}

我哪里错了?

首先,你应该这样写你的代码:

编辑:

添加速记

(function($) {
    $('<li />')
        .addClass('checkboxclassid')
        .append(
            $('<input />', {
                id:      'classid' + _id,
                name:    'classtype[]',
                value:   _id,
                type:    'checkbox',
                checked: !$.inArray(_id, var_id) 
            })                                      
        )
        .append(
            $('<label />', {
                'for':  'classid' + _id
            }).text( _text)
        )
})(jQuery)

相关文章: