我有一个使用FB javascript SDK通过ajax加载图片的应用。这一切都有效,但当用户点击图片并成功上传时,我想取消绑定它,以便用户无法再次上传。
该功能如下所示:
function postImage(fbimgurl, token, obj) {
obj.click(false); //I think this should turn off clicking but it does not
$.ajax({
//ajax code here. This works fine
}
当页面加载时,Facebook连接成功时,它最初被绑定:
FB.getLoginStatus(function (response) {
if (response.status =='connected') {
var fbaccesstoken = response.authResponse.accessToken;
$('.pic').each(function(){
var picurl = $(this).attr('fullurl');
$(this).on('click', function() { postImage(picurl, fbaccesstoken, $(this)) });
});
}
我怀疑在上传图片后再次调用'connected'响应,因此它会重新绑定postImage函数。我对么?我试图将此函数绑定到脚本中其他位置的pic div,但它似乎只有在我将其放入Facebook响应中时才有效,可能是因为访问令牌或其他一些我不理解的异步内容。在函数成功时取消绑定此对象的最佳方法是什么,因此无法重新单击?
答案 0 :(得分:0)
您可以使用事件对象上的目标从单击处理函数内部解除绑定。
$('.pic').each(function(){
var picurl = $(this).attr('fullurl');
$(this).on('click', function( event ) {
postImage(picurl, fbaccesstoken, $(this));
$(event.target).unbind('click');
});
});
答案 1 :(得分:0)
我通过在函数中放入obj.off()来解决这个问题。由于某些原因,使用“点击”进行此操作失败。怪异。