Javascript jquery按钮打开2个权限对话框

Javascript jquery按钮打开2个权限对话框,javascript,jquery,facebook-graph-api,Javascript,Jquery,Facebook Graph Api,我正在开发一个facebook应用程序,每次在代码中添加jQuery后,我都会遇到一些奇怪的行为 这是我的原始代码,运行良好: button.onclick = function() { FB.login(function(response) { if(response.authResponse) { FB.api('/me', function(info) { login(response, info);

我正在开发一个facebook应用程序,每次在代码中添加jQuery后,我都会遇到一些奇怪的行为

这是我的原始代码,运行良好:

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

        }
    }, {scope:'publish_stream'});
}
然后我添加了jQuery并使用了click事件:

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

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

现在,当我点击按钮时,会打开两个权限对话框。为什么会这样?

这段代码可能运行了两次。您可以使用console.log()或警报进行检查。您的原始代码工作正常,因为“button.onclick=…”覆盖了以前的onlick事件处理程序,而jQuery使用addEventListener(或IE上的attachHandler),这不会删除以前的处理程序

如果是,试试看

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

唯一有意义的是
这个
的上下文已经改变了-在jQuery回调中
这个
现在是元素
#按钮
,而以前它是一个不同的对象。您删除了第一个代码了吗?您确定页面中只存在一个id为#button的元素吗?可能您在代码中的某个地方显式调用了click事件。这似乎很可能,因为我使用了
FB.getLoginStatus(updateButton)
FB.Event.subscribe('auth.statusChange',updateButton')以检查用户状态。我怎样才能避开这件事?