Jquery $('input[name=""]').change(函数不会在 Chrome 中触发,除非它之后有未捕获的错误

Jquery $('input[name=""]').change(function WILL NOT FIRE in Chrome unless there is an uncaught error after it

所以,这是我编写的一个脚本,它使一些输入依赖于来自另一个输入的肯定回答。在这种情况下,'parent' 输入是一个单选按钮。

您可以看到它在文档准备就绪时隐藏输入的父 div,然后在触发逻辑之前等待更改相关选项。

如果您查看 javascript 底部附近的评论,您就会明白是什么一直困扰着我。如果我删除 if 语句,则不会触发 change 函数。如果我设置变量以便控制台中不会记录错误,则不会触发更改事件。

如果我将 jquery 选择器更改为 $('select').change... 事件将触发,但显然不会对单选按钮起作用。将其更改为 $('input').change... 也失败。

<script type="text/javascript"><!--
                $(function(ready){
                    $('#input-option247').parent().hide();
                    $('#input-option248').parent().hide();
                    $('#input-option249').parent().hide();
                    $('#input-option250').parent().hide();
                    $('#input-quantity').attr('type', 'hidden');
                    $('#input-quantity').parent().hide();
                    $('input[name="option\[230\]"]').change(function() {
                        if (this.value == '21') { //If yes, display dependent options
                            $('#input-option247').parent().show().addClass('required');
                            $('#input-option248').parent().show().addClass('required');
                            $('#input-option249').parent().show().addClass('required');
                            $('#input-option250').parent().show().addClass('required');
                        } else if (this.value == '22') { //If no, hide dependent options
                            $('#input-option247').parent().hide().removeClass('required');
                            $('#input-option248').parent().hide().removeClass('required');
                            $('#input-option249').parent().hide().removeClass('required');
                            $('#input-option250').parent().hide().removeClass('required');
                        }
                    });
                    //I don't know why this is necessary, but the input.change() event WILL NOT FIRE unless it's present.  If I set the variable, then it breaks the change function above.  If it's not here, it breaks the change function above.  I'm stumped.
                    if(poop){}

                });//--></script>

我真的希望有人能看到我疲惫的大脑看不到的相当明显的东西。这是一个非常简单的脚本,我正在为一个看起来相当烦人的错误而烦恼。

如果您的选择器有特殊字符,您需要在这些字符前使用 \

$('input[name="option[230]"]')

应该是

$('input[name="option\[230\]"]')

http://api.jquery.com/category/selectors/

这可能是也可能不是一个好的答案,但我设法解决了问题。我在使用此选择器触发更改事件的页面上有另一个脚本:$('select[name^="option"], input[name^="option"]').change(function() {

我最好的猜测是,这两个函数不能使用来自同一元素的单个更改事件触发。我将上面代码的功能部分移到了第二个脚本中,它似乎按预期工作。如果有人希望提供解释此行为的答案,我会接受。