2015-12-21 79 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') 
     } 
    }