2011-09-14 20 views
0

我正在開發一個Facebook應用程序,並且每次都將jQuery添加到我遇到的一些奇怪行爲的代碼中。jquery按鈕打開2權限對話框

這是我的工作正常的原始代碼:

button.onclick = function() { 
    FB.login(function(response) { 
     if(response.authResponse) { 
      FB.api('/me', function(info) { 
       login(response, info); 
      }); 
     } 
     else { 

     } 
    }, {scope:'publish_stream'}); 
} 

然後我說jQuery和使用的單擊事件,而不是:

$("#button").click(function() { 
    FB.login(function(response) { 
     if(response.authResponse) { 
      FB.api('/me', function(info) { 
       login(response, info); 
      }); 
     } 
     else { 

     } 
    }, {scope:'publish_stream'}); 
}); 

現在兩個Permission對話框打開時,我按一下按鈕。爲什麼是這樣?

+0

這將使意義將是'this'已經改變的背景下,唯一的事情 - jQuery的回調'現在this'是元素'#button'內,而以前這是一個不同的對象。 – Tejs

+0

您是否刪除了第一個代碼?你確定只有一個元素,ID爲#button確實存在於你的頁面中嗎? – reporter

+0

可能你在代碼中明確地調用了單擊事件。 – mjs

回答

0

這段代碼可能運行了兩次。你可以用console.log()或警報來檢查它。你原來的代碼工作,因爲「button.onclick = ...」會覆蓋以前的onlick事件處理程序,而jQuery使用addEventListener(或IE上的attachHandler),它不會刪除prevoius處理程序。

如果是這樣,嘗試

$('#button').unbind('click').click(function() {....}); 
+0

這似乎很有可能,因爲我使用'FB.getLoginStatus(updateButton);'''和'FB.Event.subscribe('auth.statusChange',updateButton);'檢查用戶狀態。我怎樣才能解決這個問題? –