复选框的Jquery不止一次击中调试器

时间:2014-04-23 06:18:23

标签: javascript jquery asp.net asp.net-mvc-4 checkbox

我正在研究Mvc.Grid并遇到一个复选框onclick问题。网格中有个人资料列表,每个个人资料的每一行都有一个复选框。我需要获取已检查的ID列表。所以我的jquery代码是

    $('.checkboxClick').click(function () {
        debugger;
        var id = $(this).attr("id");
        CheckPaymentSelected(id);
    });

    function CheckPaymentSelected(id) {
        debugger;
        if ($("#" + id).is(':checked'))
        {
            debugger;
            selectedProfilesID.push(id);

        }
        else {
            var removeItem = id;
            selectedProfilesID = jQuery.grep(selectedProfilesID, function (value) {
                return value != removeItem;
            });
        }

    }

因此单击一个复选框,调试器应该只打一次。但相反,调试器打了10次。我的网格长度也是10.任何人都可以帮我解决这个问题。我没有点击功能,而是尝试了OnChange功能,但都是徒劳的。我的复选框如下所示:

我做错了吗?

3 个答案:

答案 0 :(得分:0)

$('.checkboxClick').click(function () {
        var id = $(this).attr("id");
        if($(this).is(':checked')
        {
         debugger;
         selectedProfilesID.push(id);
        }
        else{
           var removeItem = id;
           selectedProfilesID = jQuery.grep(selectedProfilesID, function (value) {
           return value != removeItem;
        });
        }
    });

试试这个。我认为这将解决您的问题。

答案 1 :(得分:0)

试试这个

$('.checkboxClick').click(function () {
       if(this.checked) {
        debugger;
        var id = this.id;
        CheckPaymentSelected(id);
        }
    });

<强> DEMO HERE

答案 2 :(得分:0)

在深入思考可能是什么解决方案后,我尝试这样做,令人惊讶,幸运的是它对我有用:

$("input#@item.imdcode").click(function() {
        debugger;
        var id = $(this).attr("id");
        CheckPaymentSelected(id);
    });

    function CheckPaymentSelected(id) {
        debugger;
        if ($("#" + id).is(':checked')) {
            debugger;
            selectedProfilesID.push(id);

        }
        else {
            var removeItem = id;
            selectedProfilesID = jQuery.grep(selectedProfilesID, function (value) {
                return value != removeItem;
            });
        }

    }