2016-08-11 122 views
0

有人能告訴我你怎麼能平變化停用事件,並激活它暫時取消激活onchange事件

$(':checkbox').each(function (k, v) { 
    $(this).onchange = null;// 
    $(this).off() // works but I do not know how to reactivate onchange event 
}) 

編輯1: 讓我解釋一下,你我的問題......我用引導撥動onmy複選框。但也許這只是一個細節。

所以我的問題是..我有我的表單上的「重置」按鈕。當我點擊它時,我有一個函數在我的表單的每個複選框上循環,試圖「復位」每個複選框。通過重置我的複選框,我的意思是將它們設置爲初始值。 。 。但是這樣做會觸發我的代碼中稍後出現的「onchange」函數。我不想觸發「onchange」功能

+0

(本).prop( '禁用',真).delay(500).prop( '禁用',FALSE) –

+0

所以,你要*禁用*了'onchange'事件和比重新啓用它?你爲什麼不直接退出該功能而不解除綁定事件。 – epascarello

+0

你的意思是什麼*暫時*準確?你不需要這裏的'.each'。 – DavidDomain

回答

1

我會推薦兩種選擇之一。

首先,你可以取消綁定,並通過給函數的名稱重新綁定處理程序:

function handleCheckboxClick(e) { 
    //... 
} 

$(':checkbox').off('change'); 
$(':checkbox').on('change', handleCheckboxClick); 

另一種選擇是創建你設置爲truefalse需要一個變量來指定是否執行處理:

$(':checkbox').on('change', function(e) { 
    if (!window.shouldExecuteCheckboxChangeHandler) 
     return; 

    //... 
}); 
+0

謝謝你的男人!經過數小時的嘗試,我已經實現了一些正常工作。 我選擇你的第二個解決方案。我將屬性設置爲窗口對象並將其用作標誌(true或false) – zm455

-1
$(this).prop('disabled',true).delay (500).prop('disabled',false) 
+0

500是半秒 –

+0

'.delay()'不會那樣工作。 – cpburnz

+0

是嗎?它通常用在動畫之間..? –

0

您可以禁用和啓用元素。

$(':checkbox').attr('disabled', 'disabled'); 
$(':checkbox').removeAttr('disabled'); 
0

您可以使用onoff

$(':checkbox').each(function (k, v) { 

    $(this).off("change", myFunction) 

    //do stuff 

    $(this).on("change", myFunction) 

} 
function myFunction(e) { 
    //your event handling code 
} 

您還需要使用myFunction當您最初設定的處理程序。