难以访问JQuery Array的内容

时间:2012-02-26 03:18:15

标签: jquery

我在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

??我错过了什么?

3 个答案:

答案 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/>');
});

正如您所看到的,还有其他一些事情需要解决。