Включить и отключить щелчок по элементу

#jquery

#jquery

Вопрос:

После щелчка по элементу я хотел бы отключить click() этот элемент, пока пользователь не выполнит какую-либо другую задачу. Я видел сообщения, в которых люди говорят, чтобы добавить отключенный атрибут к элементу, но, похоже, у меня это не работает.

Я видел другие сообщения, где они рекомендуют отменить привязку click() , но тогда нужно дублировать код при повторной привязке click() . Есть предложения о наилучшем способе сделать это? Спасибо

 $("#someElement").click(function(){
    //Disable click on #someElement, do some stuff, and show another element
    $('#anotherElement').show();
});

$('#anotherElement').click(function(){
    //Do some stuff and re-enable #someElement
});
  

Комментарии:

1. Вам не нужно дублировать какой-либо код при повторной привязке; определите функцию обработчика щелчка как неанонимную и повторно привяжите ее.

Ответ №1:

Вы можете использовать bind и unbind :

 $("#someElement").click(function(){
  $(this).unbind('click');
  $('#anotherElement').show();
});

$('#anotherElement').click(function(){
  $("#someElement").bind('click');
});
  

Комментарии:

1. Лично, поскольку эти события происходят bind и unbind несколько раз, я бы добавил пространство имен к событию (например .bind('click.toggled', function(){ });

2. Возможно, я что-то упускаю, но после того, как #someElement получит bind(), у него больше нет исходной функции, привязанной к событию.

Ответ №2:

Не уверен, почему это еще не опубликовано.

Добавьте класс, подобный .is-disabled , к элементу после его нажатия. Когда другое действие будет завершено, удалите этот класс из элемента.

И определите этот класс следующим образом (поддержка 92% браузеров по состоянию на 29.02.2017,http://caniuse.com/#feat=pointer-events ):

 .is-disabled {
   pointer-events: none;   
}
  

Ответ №3:

Просто поместите код в свою функцию щелчка внутри этой области:

 if (clickable == true)
{
}
  

И когда пользователю не разрешено нажимать на него, установите clickable значение false . Когда пользователю будет разрешено щелкнуть снова, установите clickable значение true еще раз.
Не такой профессиональный, как anwser от Sarfraz (его не было, когда я нажал кнопку «Добавить ответ», иначе я бы, вероятно, не опубликовал это), но он работает и прост: p