Подтвердить что ты не робот

Сначала отвяжите клик, а затем привяжите (jquery)

1. У меня включено событие onclick,

$('#locations').click(function(){
$('#train').unbind('click'); 
//do some stuff
}

2. После нажатия кнопки закрытия

$('.close').click(function(){
//do some stuff
}

3. Затем снова, если я нажму #train

$('#train').bind('click', function() {
alert('train is clicked');
//do some stuff
}

Теперь проблема в том, что #train не запускается. Может ли это связать событие снова с .close функцией?

Прошу предложить. Спасибо заранее.

4b9b3361

Ответ 1

Глядя на ваш вопрос, вы, кажется, не связываете назад click после того, как вы unbind его, поэтому он не сработает. (Предполагая, что вы сохранили последовательность своих функций правильно). Вам придется сделать это следующим образом:

//Set a function with the action you need to do after you click the train
function  trainClick() {
  alert('train is clicked');
  //do some stuff
}

Когда вы отменяете привязку, вызывайте unbind с именем функции:

$('#locations').click(function(){
 $('#train').unbind('click',trainClick);
//do some stuff
}

Затем, чтобы связать клик (когда #close), вы должны использовать:

$('.close').click(function(){
  $('#train').bind('click',trainClick);
  //do some stuff
}

НОТА:

Лучше всего было бы использовать on и off, если вы используете версию больше, чем JQuery v1.7, потому что, ну.. тогда он не будет работать. В приведенном выше коде просто замените bind on и unbind на off.

$('#train').on('click',trainClick);
$('#train').off('click',trainClick);

Надеюсь это поможет!

Ответ 2

ОБЯЗАТЕЛЬНЫЕ И НЕОБХОДИМЫЕ РУЧКИ

Ключ - Область.

Вы должны объявить и определить function (trainClick(){stuff it does}) вне обработчика событий, чтобы его могли видеть функции других кнопок.

Ниже приведен пример.

function trainClick()
{
    alert("train is clicked"); //Notice this function is declared outside event handlers below
}
$('#button1').on("click", trainClick); //this calls the above function

$("#button2").on("click",function(){
    $("#button1").off("click",trainClick); //unbinds button1 from trainClick() function (event handler)
});//End Button 2 click

$("#button3").on("click",function(){
    $("#button1").on("click",trainClick); //binds button1 to trainClick() function (event handler)
});//End Button 2 click