将相同的事件处理程序添加到单选按钮和复选框

时间:2017-07-09 04:11:02

标签: javascript jquery checkbox radio-button

我正在尝试添加一个功能,添加所选复选框和单选按钮的值。我创建了一个功能,可以添加复选框的值和单选按钮的功能,但我很难将两者合并为一个工作功能。我认为我的问题在于同时使用与.click()

相关联的radio和checkbox元素

我的代码可以在这里看到: https://jsfiddle.net/Buleria28/nz43u7x8/2/

HTML是:

<input type="checkbox" value="1" />test 1<br/>
<input type="checkbox" value="2" />test 2<br/>
<input type="checkbox" value="3" />test 3<br/>

<input type="radio" name="test" value="1" />test 4
<input type="radio" name="test" value="2" />test 5
<div id='sum'></div>

jQuery是:

jQuery(document).ready(function($) {
var sum = 0;

$("input:checkbox"),$("input:radio").click(function() {
   sum = 0;
    $("input:checkbox:checked").each(function(idx, elm) {
        sum += parseInt(elm.value, 10);
    });

   sum = 0;
    $("input:radio:checked").each(function(idx, elm) {
        sum += parseInt(elm.value, 10);
    });
    $('#sum').html(sum);
  });
});

2 个答案:

答案 0 :(得分:2)

您实际上正在使用comma operator并且只将事件处理程序添加到第二个jQuery对象。而是通过在jQuery构造函数的第一个参数中使用逗号来组合实际的选择器,类似于CSS选择器:

$("input:checkbox, input:radio").click(function() {
  …
});

答案 1 :(得分:1)

您可以使用解决方案https://jsfiddle.net/nz43u7x8/5/

jQuery(document).ready(function($) {
    var sum = 0;

    $("input:checkbox, input:radio").click(function() {
        sum = 0;
        $("input:checkbox:checked").each(function(idx, elm) {
            sum += parseInt(elm.value, 10);
        });

        $("input:radio:checked").each(function(idx, elm) {
            sum += parseInt(elm.value, 10);
        });
        $('#sum').html(sum);
    });
});