1

我正在玩一些代码并遇到了一个问题,即一个函数仅适用于第一个元素,尽管设置了一个变量来获取函数运行所在的元素的 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);

如果您能帮助我了解为什么会发生这种情况并提出一个很棒的潜在解决方案。

谢谢。

4

2 回答 2

1

看起来有问题的孩子是这条线$('#' + parent + ' :checked')

选择没有checked属性

应该是

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

也需要更换

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

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

检查小提琴

于 2013-07-30T02:04:56.510 回答
0

You don't need to use the :checked or the :selected pseudo selector. You can just use the select element itself to find the parent form you need.

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

Change the above to:

var parent = $(this).closest('form').attr('id');
于 2013-07-30T02:12:27.257 回答