2016-08-11 2 views
3

У меня есть несколько события щелчка, сделанное на этом пути:.click Event() и выключаться

$(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

Хорошо, как я пропустил, что они одинаковые. Использование 'off' и пользовательских классов кажется излишним. –

+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

Вы должны указать namespacing, так как это может быть хорошей идеей использовать их тоже. –

+0

@ IstvánUjj-Mészáros yep thx но. Не сейчас. Полностью не нужно «нажимать: фик». Давайте просто сохраним это на более позднее время. –

+0

Это всегда хорошая идея, на мой взгляд, когда вы используете 'off', чтобы избежать будущих проблем, так как' off' удалит все обработчики 'click', а не только' doThisStuffOnClick'. –