2

当我单击登录链接时,我试图激活警报,令人惊讶的是没有任何反应。我需要一些帮助。

我想在单击登录链接时弹出警报,但令人惊讶的是没有任何反应。谢谢,米克

<!DOCTYPE html>
<html>
<head>
<title>Facebook Client-side Authentication Example</title>
<script src="jquery.js" type="text/javascript"></script>

</head>
<body>

<div id="fb-root"></div>
<script type="text/javascript">
    // want Alert to popup when I click on auth-loginlink
$("#auth-loginlink").on("click",function () {
  alert("hi hello");
});
// ultimately I would like this to be binded with login and logout link
$("#auth-logoutlink").on("click", bindLogout);

function bindLogin(event){
alert("hello");
//FB.login();
};

function bindLogout(event){
alert("Out !!!");
//FB.logout();
};      

</script>
<h1>Facebook Client-side Authentication Example</h1>
    <div id="auth-status">
    <div id="auth-loggedout">
        <a href="#" id="auth-loginlink">Login</a>
    </div>
    <div id="auth-loggedin" style="display:none">
        Hi, <span id="auth-displayname"></span>  
        (<a href="#" id="auth-logoutlink">logout</a>)
    </div>
    </div>
</body>
</html>
4

4 回答 4

3

您的代码在页面中加载元素之前执行。

发生这种情况是因为您的脚本位于 HTML 中的元素之上。

您将需要将脚本移动到页面底部,或者在 DOM 准备好后以更健壮的方式调用它。

jQuery为此提供了一种方法。

$(document).ready(function(){
 // your code in here will be called after the DOM is ready
});

或简短的版本

$(function(){
     // your code in here will be called after the DOM is ready
});

http://api.jquery.com/ready/上的文档

于 2012-11-17T11:44:01.993 回答
0

你必须使用:

$(function() {
  //Your code here
})

因为然后代码在页面加载后执行。

于 2012-11-17T11:40:45.243 回答
0

JQuery 中的所有内容都需要在里面

$(document).ready(function() {
});

除了函数定义。否则,您会尝试将处理程序注册到尚不存在的东西。

于 2012-11-17T11:41:29.340 回答
0

问题是您的函数<script>未绑定到标签。确保在文档准备好时耦合了一个 JQuery 函数。使用此构造:

 $(document).ready(function(){
//Add your functions here. 
//Use the JQuery-Factory-function to construct JQuery-Objects, encapsulating the tag:

$(SELECTOR).click(YOURFUNCTION);

 });

更强大的方法是使用您的“JQuery-Add-On-Code”创建一个新的 JS 文件:

(function($){
$(document).ready(function(){

//Your own JQuery-Code
});
})(jQuery);
于 2012-11-17T11:56:43.007 回答