2016-08-11 100 views
3

我對這種方式提出了一些單擊事件:事件。點擊()打開和關閉

$(function() { 
    $('#button1').click(function() { 
     //do samething... 
    }); 

    $('#button2').click(function() { 
     //do samething... 
    }); 
    ..... 
}); 

在我的應用程序的不同部分,我想關閉的點擊,後來接通他們再次:

我可以關掉點擊調用這個函數:

function keysLock() { 
    $('#button1').off('click'); 
}; 

現在我不能恢復點擊功能。我試着用類似

$('#button1').on('click') 

(和很多類似的東西),但它不起作用。

+1

是,'.off()'不輕彈光開關的意識把它關掉,它* *刪除處理程序。如果你綁定了命名函數,那麼你可以使用'$(「#button1」)。click(namedFunction)''重新綁定它們,或者你可以更新處理程序來標識它是否當前處於活動狀態,然後在'keysLock )'只需將該標誌設置爲false即可。 @pmahomme - '.click()'不被棄用。它只是'.on()'的一個快捷方式 - 這裏不是問題。 – nnnnnn

回答

3

只是基礎上添加您的評論的替代解決方案,你可以使用一個變量來啓用/禁用事件和你沒有刪除處理的話,這樣的事情:

$(function() { 
    var someSpecificCondition = false; 

    function doThisStuffOnClick() { 
    if (someSpecificCondition) { 
     return; 
    } 
    // do something 
    } 

    $('#button1, #button2').click(doThisStuffOnClick);  
}); 
+0

好的,編輯,因爲我錯過了他們是一樣的。使用'關閉'和自定義類似乎是矯枉過正。 –

+1

我認爲OP沒有比這兩個人得到更好的答案,也沒有在他所做的事情中顯示更多的代碼+洞察力。我甚至認爲這可能是一個* XY問題*。 –

+1

我同意我們沒有足夠的信息。 –

3

... .on() ...... .off()所以是

Aassign點擊自定義功能,如:

function doThisStuffOnClick() { 
    // do someshitng 
} 

不是使用他.on()方法:

$("#button1").on("click", doThisStuffOnClick); 

,而不是將其關閉:

$("#button1").off("click"); 

,而不是把它重新打開

$("#button1").on("click", doThisStuffOnClick); 


閱讀總是更這裏: .off()jQuery Docs

+0

您應該提及命名空間,因爲它也可能是一個好主意。 –

+0

@IstvánUjj-Mészárosyep thx但是。不是現在。完全不需要'點擊:fick'。讓我們保留一段時間。 –

+0

當我們使用'off'來避免將來的問題時,我認爲這總是一個好主意,因爲'off'會刪除所有'click'處理程序,而不是'doThisStuffOnClick'。 –