Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery点击绑定和Facebook JS SDK的怪异_Javascript_Jquery_Ajax_Facebook_Click - Fatal编程技术网

Javascript JQuery点击绑定和Facebook JS SDK的怪异

Javascript JQuery点击绑定和Facebook JS SDK的怪异,javascript,jquery,ajax,facebook,click,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.

我有一个应用程序,它使用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”响应,因此它会重新绑定positmage函数。我说得对吗?我曾尝试将此函数绑定到脚本中其他地方的pic div,但只有当我将其放在Facebook响应中时,它似乎才起作用,可能是因为访问令牌或其他一些我不了解的异步内容。当函数成功时,解除绑定此对象的最佳方法是什么,这样就无法重新单击它?

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

$('.pic').each(function(){  
  var picurl = $(this).attr('fullurl'); 
  $(this).on('click', function( event ) { 
      postImage(picurl, fbaccesstoken, $(this));
      $(event.target).unbind('click');  
  }); 
});

我通过在函数中加入obj.off()找到了答案。由于某些原因,使用“单击”进行此操作失败。奇怪。

不幸的是,这也不起作用。我只能猜测facebook connect会重新绑定click事件处理程序。这令人沮丧。