我有一个使用 live() 绑定(bind)的函数:
$('.wink-back').live( "click", function( event ) {
var uid = $(this).attr("rel");
$(this).die( "click" ).addClass("disabled");
$.ajax({
type : "POST",
cache : false,
data : "data[Wink][recipient_id]=" + uid,
url : "/winks/sendWink",
success : function( data ) {
var newData = JSON.parse( data );
if ( newData.Message.code == 200 ) { // success
} else { // failure
// rebind function here
}
}
});
});
我正在使用 .die() 在第一次单击时解除元素与所有实时事件的绑定(bind),但我需要做的是将整个代码块重新绑定(bind)到该元素,如果 AJAX 请求返回错误代码 ( < 200 )。
我该如何实现这个目标?我本质上需要恢复绑定(bind)。
问候, 巴里
最佳答案
编辑从 jQuery 1.7 开始,推荐的响应事件的方法是 .on()
。
在确定不再需要绑定(bind)之前,请勿删除它们。
$('.wink-back').on("click", function( event ) { // jQuery >= 1.7
// $('.wink-back').live("click", function( event ) { // jQuery < 1.7
var $this = $(this);
var uid = $this.attr("rel");
if (!$this.hasClass("disabled")) {
$this.addClass("disabled");
$.ajax({
type : "POST",
cache : false,
data : "data[Wink][recipient_id]=" + uid,
url : "/winks/sendWink",
success : function( data ) {
var newData = JSON.parse( data );
if ( newData.Message.code == 200 ) { // success
$this.off("click"); // jQuery >= 1.7
// $this.die("click"); // jQuery < 1.7
} else {
$this.removeClass("disabled");
}
}
});
}
});
关于jquery - ajax失败后重新绑定(bind)当前函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6160439/