Javascript jquery按钮打开2个权限对话框
我正在开发一个facebook应用程序,每次在代码中添加jQuery后,我都会遇到一些奇怪的行为 这是我的原始代码,运行良好: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);
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')代码>以检查用户状态。我怎样才能避开这件事?