Javascript 将函数直接传递给change()事件不起作用
我必须根据选择的值显示或隐藏一些div。为此,我有一段非常有效的代码:Javascript 将函数直接传递给change()事件不起作用,javascript,jquery,Javascript,Jquery,我必须根据选择的值显示或隐藏一些div。为此,我有一段非常有效的代码: $(document).ready(function($) { function formaCaptacao() { $('.receptivo').parent().hide(); $('.indicacao').parent().hide(); $('.interna').parent().hide();
$(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;使用括号执行函数,并将结果应用于更改处理程序。在你的情况下,它是未定义的,就是这样。现在我明白了。谢谢,我明白了。现在我真的不明白这是怎么回事了。我不知道是谁投了反对票。不是我。我投了赞成票,明白了。现在我真的不明白这是怎么回事了。我不知道是谁投了反对票。不是我。我投了赞成票。