使用jQuery覆盖JavaScript中的复选框

使用jQuery覆盖JavaScript中的复选框,javascript,jquery,checkbox,qunit,Javascript,Jquery,Checkbox,Qunit,帮助进行单元测试复选框行为。我有这一页: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function

帮助进行单元测试复选框行为。我有这一页:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $('<div><input type="checkbox" name="makeHidden" id="makeHidden" checked="checked" />Make Hidden</div>').appendTo('body');
            $('<div id="displayer" style="display:none;">Was Hidden</div>').appendTo('body');

            $('#makeHidden').click(function() {
                var isChecked = $(this).is(':checked');

                if (isChecked) {
                    $('#displayer').hide();
                }
                else {
                    $('#displayer').show();
                }
                return false;
            });

        });

    </script>
</head>
<body>
</body>
</html>
而且:

$(':input[name=shipToNotActive]').attr('checked', 'checked');
$('#shipToNotActive').change();
试试这个:

$(function() {
    $('<div><input type="checkbox" name="makeHidden" id="makeHidden" checked="checked" />Make Hidden</div>').appendTo('body');
    $('<div id="displayer" style="display:none;">Was Hidden</div>').appendTo('body');

    $('#makeHidden').click(function() { return onCheckboxClicked(this) } );
});

function onCheckboxClicked(el) {
    var isChecked = $(el).is(':checked');

    if (isChecked) {
        $('#displayer').hide();
    }
    else {
        $('#displayer').show();
    }
    return false;
}
试试这个:

$(function() {
    $('<div><input type="checkbox" name="makeHidden" id="makeHidden" checked="checked" />Make Hidden</div>').appendTo('body');
    $('<div id="displayer" style="display:none;">Was Hidden</div>').appendTo('body');

    $('#makeHidden').click(function() { return onCheckboxClicked(this) } );
});

function onCheckboxClicked(el) {
    var isChecked = $(el).is(':checked');

    if (isChecked) {
        $('#displayer').hide();
    }
    else {
        $('#displayer').show();
    }
    return false;
}
用“更改”代替“单击”怎么样

返回错误;不会造成影响,因为事件是由于发生更改而触发的。

使用更改而不是单击如何

返回错误;不会妨碍,因为事件是由于发生更改而触发的

现在我的代码是这样的:

        if ($.browser.msie) {
            $('#makeHidden').change(function () {
                this.blur();
                this.focus();
                onCheckboxClicked();
            });
        }
        else {
            $('#makeHidden').change(function() {
                return onCheckboxClicked();
            });
        }
我所有的测试包括手工玩具和手工制作都很好

有人有比这更好的吗

现在我的代码是这样的:

        if ($.browser.msie) {
            $('#makeHidden').change(function () {
                this.blur();
                this.focus();
                onCheckboxClicked();
            });
        }
        else {
            $('#makeHidden').change(function() {
                return onCheckboxClicked();
            });
        }
我所有的测试包括手工玩具和手工制作都很好


有人有比这更好的东西吗?

一直在走这条路。由于返回false,它将覆盖复选框的行为。它将始终被检查。它确实会运行单击,但随后会在复选框内部重置checked属性。真是弱智。发生在ie和Firefox,我们一直在这条路上。由于返回false,它将覆盖复选框的行为。它将始终被检查。它确实会运行单击,但随后会在复选框内部重置checked属性。真是弱智。发生在ie和Firefox中这在我的玩具示例中至今仍然有效。现在让我用真正的代码运行我的测试!在Firefox中很有魅力。Firefox:玩具的手动测试-很好。单元测试-很好。生产应用程序的手动测试-良好。Internet Explorer:玩具的手动测试-失败。单元测试-很好。生产应用程序的手动测试-失败。Internet Explorer最初需要单击一次。之后需要点击两下。我喜欢IE。对不起,我一点也不知道。修补了一段时间,但不知道如何使其正常工作。这在我的玩具示例中至今仍然有效。现在让我用真正的代码运行我的测试!在Firefox中很有魅力。Firefox:玩具的手动测试-很好。单元测试-很好。生产应用程序的手动测试-良好。Internet Explorer:玩具的手动测试-失败。单元测试-很好。生产应用程序的手动测试-失败。Internet Explorer最初需要单击一次。之后需要点击两下。我喜欢IE。对不起,我一点也不知道。修补了一段时间,但不知道如何使其正常运行。+1-有趣的是,我最近处理了一个类似的IE更改问题,除了在选择列表中。该解决方案/黑客需要像您一样的本地API模糊和聚焦。与您不同的是,这个问题是第一次没有触发变革,但第二次变革以及此后的每一次变革都触发了变革。因此,解决方案是jQuery焦点,然后是本机模糊焦点。谢天谢地,没有浏览器检查是必要的,因为黑客只运行了一次。我正在跟踪这一条作为提醒。感谢您发布解决方案。问题是我的单元测试没有捕获问题。我想这就是为什么你不应该测试gui的原因。帮助我解决了一个问题。没有检查IE,我只是发布了模糊/焦点,不管浏览器是什么。+1-有趣的是,我最近处理了一个类似的IE更改问题,除了选择列表。该解决方案/黑客需要像您一样的本地API模糊和聚焦。与您不同的是,这个问题是第一次没有触发变革,但第二次变革以及此后的每一次变革都触发了变革。因此,解决方案是jQuery焦点,然后是本机模糊焦点。谢天谢地,没有浏览器检查是必要的,因为黑客只运行了一次。我正在跟踪这一条作为提醒。感谢您发布解决方案。问题是我的单元测试没有捕获问题。我想这就是为什么你不应该测试gui的原因。帮助我解决了一个问题。而不是检查IE,我只是发布了模糊/焦点,而不考虑浏览器。