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 関数が再バインドされます。私は正しいですか?この関数をスクリプトの別の場所にある pic div にバインドしようとしましたが、おそらくアクセス トークンまたはその他の理解できない非同期処理のために、Facebook 応答内に配置した場合にのみ機能するようです。関数が成功したときにこのオブジェクトをアンバインドして再クリックできないようにする最善の方法は何ですか?

4

2 に答える 2

0

関数にobj.off()を入れることでそれを理解しました。何らかの理由で「クリック」でそれを行うのに失敗しました。変。

于 2012-12-31T01:00:24.430 に答える
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 に答える