2013-10-07 57 views
3

我正在創建一個動態表單。我有一個下拉列表,當用戶進行選擇時,會查詢數據庫以查看該項目是否需要隱私。如果沒有,則會將其他字段添加到表單中。此外,還會觸發郵政編碼查找ajax功能,但只有在該項目不是私人的情況下才會觸發。jquery如何取消觸發函數

這是所有工作的罰款,直到用戶改變主意......

這裏是我的代碼,當過一個項目從下拉列表中選擇運行相關的部分;

success:function(response){ 
    if(response === '1'){ 
     // do stuff for item that requires privacy 
     // do NOT trigger zip_check function 
    }else if(response === '0'){ 
     // do stuff for item that is public + 
     $('#zip-code').keyup(zip_check); // triggers a function to check zip code 
    } 
} 

可正常工作,直到用戶選擇非私人項目,然後改變主意,選擇在這種情況下zip_check功能仍將即使它運行現在應該不會得到觸發的私人物品。我哪裏錯了?

+0

如果可能,請提供您所使用的HTML。 – dashbh

回答

2

我認爲你正在尋找off(在(response===1){}添加此):

$('#zip-code').off('keyup', zip_check); 

這樣你刪除的點擊事件功能。如果你想刪除所有的事件,只要使用

$('#zip-code').off('keyup'); 

如果你希望所有的事件關:

$('#zip-code').off(); 

.off()超過.unbind().bind()

+0

這正是我所追求的。謝謝! – Ally

6

的首選方法,而.on()試試這個:

for binding:

$('#zip-code').on('keyup',zip_check); 

和解除綁定:

$('#zip-code').off('keyup',zip_check); 
+0

開啓/關閉+1,你讓我學到新東西:P – Martijn

+0

更好,謝謝! – Ally