0

我有一个使用 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)) }); 
});

}

我怀疑在上传图像后再次调用“已连接”响应,因此它重新绑定了 postImage 函数。我对么?我试图将此函数绑定到脚本中其他地方的图片 div,但它似乎只有在我将它放在 Facebook 响应中时才有效,可能是因为访问令牌或其他一些我不明白的异步内容。当函数成功时,解除绑定这个对象的最好方法是什么,所以它不能被重新点击?

4

2 回答 2

0

您可以通过使用事件对象上的目标从单击处理程序函数内部解除绑定。

$('.pic').each(function(){  
  var picurl = $(this).attr('fullurl'); 
  $(this).on('click', function( event ) { 
      postImage(picurl, fbaccesstoken, $(this));
      $(event.target).unbind('click');  
  }); 
});
于 2012-12-30T22:00:34.197 回答
0

我通过将 obj.off() 放入函数中解决了这个问题。由于某种原因,使用“点击”失败。诡异的。

于 2012-12-31T01:00:24.430 回答