jQuery不重复不同元素的功能?

时间:2013-07-30 02:00:33

标签: jquery

我正在玩一些代码并遇到一个问题,即函数仅适用于第一个元素,尽管设置了一个变量来抓取函数运行的元素的id。

这将更好地解释http://jsfiddle.net/matt3224/GXjdb/

function calcr() {
    var sum = 0;
    var parent = $(':checked').closest('form').attr('id');
    var names = $('#' + parent + ' :checked').map(function () {
        sum += (this.value - 0);
        return this.name;
    }).get().join(',');
    var spans = $('#' + parent + ' .totalisr').text(sum);
}

$('input[type="radio"], input[type="checkbox"], select').change(calcr);

如果你可以帮我解释为什么会发生这种情况,并提出一个很棒的潜在解决办法。

感谢。

2 个答案:

答案 0 :(得分:1)

看起来问题孩子就是这一行$('#' + parent + ' :checked')

选择没有checked属性

原来是

$('#' + parent + ' :selected')

还需要更换

var parent = $(':checked').closest('form').attr('id');

var parent = $(this).closest('form').attr('id');

<强> Check Fiddle

答案 1 :(得分:0)

您不需要使用:checked :selected伪选择器。您可以使用select元素本身来查找所需的父表单。

var parent = $(':checked').closest('form').attr('id');

将上述内容更改为:

var parent = $(this).closest('form').attr('id');