Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数直接传递给change()事件不起作用_Javascript_Jquery - Fatal编程技术网

Javascript 将函数直接传递给change()事件不起作用

Javascript 将函数直接传递给change()事件不起作用,javascript,jquery,Javascript,Jquery,我必须根据选择的值显示或隐藏一些div。为此,我有一段非常有效的代码: $(document).ready(function($) { function formaCaptacao() { $('.receptivo').parent().hide(); $('.indicacao').parent().hide(); $('.interna').parent().hide();

我必须根据选择的值显示或隐藏一些div。为此,我有一段非常有效的代码:

$(document).ready(function($) {
      function formaCaptacao()
      {
            $('.receptivo').parent().hide();
            $('.indicacao').parent().hide();
            $('.interna').parent().hide();
            var a = $('#cp-forma-captacao').val();
            console.log(a);

            switch( $('#cp-forma-captacao').val() ) {
                  case 'contato_receptivo':
                        $('.receptivo').parent().show();
                        break;
                  case 'indicacao':
                        $('.indicacao').parent().show();
                        break;
                  default:
                        $('.interna').parent().show();
                        break;
            }
      }

      formaCaptacao();

      $('#cp-forma-captacao').change(function(){
            formaCaptacao();
      });
});
在底部,当用户更改select值时,我必须将函数作为参数传递给事件更改。我试过这个:

$('#cp-forma-captacao').change( formaCaptacao() );

但它不起作用。这就好像从未调用过更改事件。为什么?我只是传递一个函数作为参数。理论上,它应该是有效的

在您的示例中,您调用的是函数,而不是将引用传递给函数本身-因此,您实际传递到change的是调用FormCaptaCao的结果,这将是未定义的,因为它从不返回任何内容,而不是函数本身

试试这个

$('#cp-forma-captacao').change(formaCaptacao);
如果你认为你在做这件事

var formCaptaco = function() { console.log('example!'); }
$('#selector').change(formCaptacao);

…这可能更有意义,它实际上比实际情况稍微复杂一些,请参阅以了解差异的描述。

在您的示例中,您正在调用函数,而不是将引用传递给函数本身-因此,您实际传递到更改中的是调用formaCaptacao的结果,这将是未定义的,因为它从不返回任何内容,而不是函数本身

试试这个

$('#cp-forma-captacao').change(formaCaptacao);
如果你认为你在做这件事

var formCaptaco = function() { console.log('example!'); }
$('#selector').change(formCaptacao);

…这可能更有意义,它实际上比实际情况稍微复杂一些,请参阅以了解差异的描述。

在函数内部调用函数名时,请尝试删除函数名中的括号。更改如下:$'cp-forma-captaco'。更改formacaptaco;$'cp forma CAPTACO'。更改forma CAPTACO;$'cp格式CAPTACO’。更改格式CAPTACO;使用括号执行函数,并将结果应用于更改处理程序。在你的情况下,它是未定义的,就是这样。现在我明白了。谢谢。在中调用函数名时,请尝试删除其括号。更改如下:$'cp-forma-CAPTACO'。更改FORMACAPTACO;$'cp forma CAPTACO'。更改forma CAPTACO;$'cp格式CAPTACO’。更改格式CAPTACO;使用括号执行函数,并将结果应用于更改处理程序。在你的情况下,它是未定义的,就是这样。现在我明白了。谢谢,我明白了。现在我真的不明白这是怎么回事了。我不知道是谁投了反对票。不是我。我投了赞成票,明白了。现在我真的不明白这是怎么回事了。我不知道是谁投了反对票。不是我。我投了赞成票。