我在JQuery中向数组添加控件,如下所示:
$('#tblControls tr').each(function () {
var radioButtonText = $(this).find("#td2").find("#chxBxValue").val();
var isSelected = $(this).find("#td2").find("#chxBxSelected");
var $newRdBtn = '';
if (isSelected == 1) {
$newRdBtn = $('<input />').attr({ id: 'rdBtn', type: 'radio', name: 'rdBtngrp', selected: 'true' }) +'<label for="rdBtn">' + radioButtonText + '</label>';
} else {
$newRdBtn = $('<input />').attr({ id: 'rdBtn', type: 'radio', name: 'rdBtngrp' }) + '<label for="rdBtn">' + radioButtonText + '</label>';
}
rblArray.push($newRdBtn);
});
稍后在另一个函数中我尝试将rblArray的内容添加到类似的
中$.each(rblArray, function (intIndex, objValue) {
$("#myPlaceHolder").append(rblArray[intIndex]);
$("#myPlaceHolder").append('<br/>');
});
但是这会返回
[object Object]Test Control 1
[object Object]Test Control 2
而不是
<input type="radio" name="rdBtngrp" id="rdBtn" />Test Control 1
<input type="radio" name="rdBtngrp" id="rdBtn" />Test Control 2
??我错过了什么?
答案 0 :(得分:0)
$('<input />').attr({ id: 'rdBtn', type: 'radio', name: 'rdBtngrp' })
是一个对象,将其更改为:
if (isSelected == 1) {
$newRdBtn = '<input id="rdBtn" type="radio" name="rdBtngrp" selected="true" />' +'<label for="rdBtn">' + radioButtonText + '</label>';
} else {
$newRdBtn = '<input id="rdBtn" type="radio" name="rdBtngrp" />' + '<label for="rdBtn">' + radioButtonText + '</label>';
}
答案 1 :(得分:0)
一个大问题是ID必须在页面中是唯一的。将您的ID更改为班级。
您似乎没有向我们展示“测试控制n”来自哪里。我怀疑你已经尝试将文本与数组中已有的jQuery对象连接起来。对象不能与文本连接。如果您只是将无线电作为字符串推送到数组而不是将它们包装在“$”中,那么应该没问题
答案 2 :(得分:0)
将字符串(带+运算符)添加到jQuery对象时会出现错误。
此外,您可以在jQuery对象而不是数组中累积新元素(不是必需但有趣)。
试试这个:
$rbl = $();//empty jQuery object.
$('#tblControls tr').each(function () {
var $td2 = $(this).find("#td2");//ids must be unique. Try class="td2" and ....find(".td2") instead
var radioButtonText = $td2.find("#chxBxValue").val();
var isSelected = $td2.find("#chxBxSelected");//Not sure this is correct?
var inputProps = { id:'rdBtn', type:'radio', name:'rdBtngrp' };//ids must be unique for label's for="..." to work
if (isSelected == 1) {
inputProps.selected = true;
}
$span = $('<span></span>');
$input = $('<input />').attr(inputProps);
$label = $('<label for="rdBtn">' + radioButtonText + '</label>');//id must match that established above
$rbl.add($span.append($input).append($label));
});
然后,追加他们:
$rbl.each(function() {
$("#myPlaceHolder").append(this).append('<br/>');
});
正如您所看到的,还有其他一些事情需要解决。