JavaScript For循环追加4次

时间:2012-10-25 16:34:12

标签: javascript jquery

我的JavaScript程序运行不正常。出于某些原因,在它附加了它从被检查的单选框中实际获得的内容之前,它会附加三次并附加除了样式之外的附加内容。我不确定我做错了什么。

$(document).delegate('#add-owner', 'pageinit', function () {
            loadOwners();
            $('#add-owner-save').bind('click', function () {
                var permission = $('#editing-permissions option:selected').text();
                var selection = $("input[type='radio']:checked") || [];
                if (selection.length > 0) {
                    for (var i = 0; i < selection.length; i++) {
                        console.log($('#label-' + selection[i].id).find('.owner-name').text());
                        console.log($("input[type='radio']:checked").val());
                        $('.display-owners').append('<div class="ui-grid-a"><div class="ui-block-a">' + $('#label-' + selection[i].id).find('.owner-name').text() + '</div><div class="ui-block-b" style="text-align:right">' + permission + '</div></div>');
                    }
                    $('.display-owners').trigger('create');
                }
                $('.display-owners').show();
                $('#add-owner').dialog('close');
                $('input[name=contribute-radio]').attr('checked', false).checkboxradio("refresh");
                return false;
            });
        });

我认为问题是我在这个页面上有多个无线电区域。如何指定我只想要这些单选按钮是我想要检查的那些?

2 个答案:

答案 0 :(得分:1)

此代码:

<击>     ... + $('#label-'+ selection [i] .id).find('...

应该是这样的:

... + $('#label-' + selection[i].attr('id')).find('...

因为你在selection数组中拥有的是jQuery对象,而不是DOM元素对象。

感谢 Esalija 指出我的假设不正确。

答案 1 :(得分:0)

既然你说有多组单选按钮,你正在使用的选择器就是在页面上找到所有这些按钮,这就是你有多个“已选中”单选按钮的原因。

此:

var selection = $("input[type='radio']:checked") || [];


对此:

var selection = $("input[name='radioset1']:checked") || [];

然后只需将每个收音机的名称命名为不同,并将“radioset1”替换为您所需的设置。