2015-12-21 237 views
-4

摘要:我想调用复选框状态更改时的外部函数。如何调用.change()函数?

下面的代码,其包括功能在所述变化调用工作(可用的代码在JSFiddle,注释部分)

HTML

<input type="checkbox" id="cb"> 

JS

$("#cb").change(function() { 
     if ($("#cb").prop('checked')) 
     { 
      alert('checked'); 
     } else { 
      alert('unchecked') 
     } 
    }); 

如所预期的,在检查或取消选中复选框时会引发alert


我现在想move the function part outside the .change() method

$("#cb").change(alertme()); 

function alertme() { 
     if ($("#cb").prop('checked')) 
     { 
      alert('checked'); 
     } else { 
      alert('unchecked') 
     } 
    } 

这不工作了(对状态变化没有警告)。为什么这样?

+0

'alertme',而不是'alertme()' – Jeff

+0

的答案是明确的,谢谢。该downvotes,好,...... – WoJ

+0

有两种方式: 第一: '$( “#CB”)变化(alertme);' 二: '$( “#CB”) .change(function(){ alertme(); });' 我更喜欢第二个版本,您需要传递函数的引用,因为您可以看到或重现函数 – Davide

回答

1

你想仅仅通过函数名的更改事件,实际上不是调用函数并传递返回值。使用这个来代替:

$("#cb").change(alertme); 
6

你只需要函数定义,不执行它:

$("#cb").change(alertme); 
2

不要执行该功能,只是把它作为一个回调:

$("#cb").change(alertme); 

function alertme() { 
     if ($("#cb").prop('checked')) 
     { 
      alert('checked'); 
     } else { 
      alert('unchecked') 
     } 
    }