JQuery点击绑定和Facebook JS SDK怪异

时间:2012-12-30 21:46:31

标签: javascript jquery ajax facebook click

我有一个使用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响应中时才有效,可能是因为访问令牌或其他一些我不理解的异步内容。在函数成功时取消绑定此对象的最佳方法是什么,因此无法重新单击?

2 个答案:

答案 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()来解决这个问题。由于某些原因,使用“点击”进行此操作失败。怪异。