我有一个类似
的元素<div class="control">
<label> </label>
<input type="checkbox" id="1"><span class="controlText">Check Box</span>
<div style="display: inline;" class="delete"><sup>x</sup></div>
<div style="display: inline;" class="properties chkbox">Properties</div>
</div>
这个元素属于一个id为userForm的表单我所做的是,当用户单击按钮时,它调用一个函数,并使用类控件搜索所有div,并获取有关该div中元素的信息。
if($("#userForm").children().size() > 1){
var controls = new Array();
$('#userForm').find('div.control').each(function(index, Element)
{
if($(Element).find('input').attr('type') == "checkbox")
{// If element is of type checkbox
var attributes = new Array();
attributes[type] = "checkbox";
attributes[name] = $(Element).find('.controlText').text().toLowerCase().split(" ").join("_")+"_"+$(Element).find('input').attr("id");
attributes[required] = $(Element).find('input').hasClass('required');
controls[index] = attributes;
$.each(attributes, function(key, value) {
// here i need to print the array.
// I need a format of the arrays like
// controls[0]
// =>
// [type] = checkbox
// [name] = chk_name_1
// [required] = ture
// [1]
// => .....
alert( "The key is '" + key + "' and the value is '" + value + "'" );
});
}
});
}
您的代码基本正确,但是存在一些问题。在为attributes
数组的元素赋值的行中,需要将元素的名称放在引号中:
attributes["type"] = "checkbox";
否则,它将寻找一个不存在的变量type
。
你的.each
循环将工作得很好,所以你只需要以你喜欢的任何格式打印值。注意,循环中的value
是一个数组,因此要打印type
,例如,您需要:
value["type"]
您还循环遍历错误的集合,因此将$.each(attributes, function(key, value) {
更改为$.each(controls, function(key, value) {