Я пытаюсь, когда я нажимаю кнопку, чтобы отвязать ее в ответе ajax в течение 2 секунд, а затем снова привязать ее.
$('#invite').click(function(){
/*ajax*/
});
И ответ ajax:
//ajax response
function(rep){
/*do stuff*/
$('#invite').unbind();
$(this).delay(2000).bind();
}
Но это не работает, кнопка остается неизменной навсегда, какие-то мысли?
не связывай/отвязывай... это становится грязным... :)
попробуйте ввести переменную флага.
образец:
здесь
var flag = false;
$('#invite').click(function(){
if (flag) return false; // if flag is true, don't run codes below this line
flag = true;
/*ajax*/
});
тогда,
//ajax response
function(rep){
/*do stuff*/
setTimeout(function(){flag=false},2000);
}
ну, что-то вроде этого... или просто измените переменную flag
соответственно, если этот образец не сработал для вас... вы получаете идею...
Сделать это
function f1(){
}
$('#invite').click(function(){
f1();
});
$( "#invite" ).unbind( "click");
$(this).delay(2000).bind("click",f1);
Когда вы отвязываете какую-либо вещь от элемента, она не хранит информацию, поэтому, когда вы привязываете ее снова, там нечего связывать.
Если вы хотите связать его снова, просто сохраните функциональность в функции.
function x(){
// any thing
$('#invite').click(function(){
/*ajax*/
});
}
для привязки
$('#invite').bind(x);
для развязывания
$('#invite').unbind();