0

在我的程序中,我一次显示一个问题,然后在下一次单击时发布并获得第二个问题。但是我为 Jquery 中的每个问题的复选框列表应用了一些逻辑,我这样称呼它

 $(document).ready(function () {


        $("input:checkbox").change(function () {
            var txt = $(this).parent().children("label").text();
            if ($(this).is(':checked')) {
                if ($(this).parent().children("label").text() == 'Not Sure') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', true);
                    $(this).attr('checked', true);
                    $(this).attr('disabled', false);
                }
            }
            else {
                if ($(this).parent().children("label").text() == 'Not Sure') {
                    $("input:checkbox").attr('checked', true);
                    $("input:checkbox").attr('disabled', false);
                    $(this).attr('checked', false);

                }
            }
        });


        $("input:checkbox").change(function () {
            var txt = $(this).parent().children("label").text();
            if ($(this).is(':checked')) {
                if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', true);
                    $(this).attr('checked', true);
                    $(this).attr('disabled', false);
                }
            }
            else {
                if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', false);
                    $(this).attr('checked', false);
                }
            }
        });

    });

所以问题是,对于 1 个问题,逻辑与其他复选框列表问题不同,我需要调用适当的函数,如您在上面看到的 document.ready 有两个函数。那么对于某些特定问题,我应该如何修复对函数的调用?

4

2 回答 2

0

您可以使用一些自定义事件并根据问题触发适当的事件,这里有一些代码:

$(document).ready(function () {
    $("input:checkbox").on("someQuestions", function () {
        var txt = $(this).parent().children("label").text();
        if ($(this).is(':checked')) {
            if ($(this).parent().children("label").text() == 'Not Sure') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', true);
                $(this).attr('checked', true);
                $(this).attr('disabled', false);
            }
        }
        else {
            if ($(this).parent().children("label").text() == 'Not Sure') {
                $("input:checkbox").attr('checked', true);
                $("input:checkbox").attr('disabled', false);
                $(this).attr('checked', false);
            }
        }
    });

    $("input:checkbox").on("anotherQuestions", function () {
        var txt = $(this).parent().children("label").text();
        if ($(this).is(':checked')) {
            if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', true);
                $(this).attr('checked', true);
                $(this).attr('disabled', false);
            }
        }
        else {
            if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', false);
                $(this).attr('checked', false);
            }
        }
    });

    $("input:checkbox").change(function(){

        // apply some logic to find out if is one question or another
        if ( someQuestion ) {
            $(this).trigger("someQuestions");
        } 
        else {
            $(this).trigger("anotherQuestions");
        }

    });
});

希望能帮助到你

于 2012-05-06T16:02:04.770 回答
0

在每篇文章中使用 jQuery unbind 函数来删除事件处理程序绑定。供参考看看这个

于 2012-05-05T09:04:46.707 回答