2012-11-17 3 views
2

Я пытаюсь активировать оповещение, когда я нажимаю ссылку «Вход», на удивление ничего не происходит. Мне нужна помощь здесь.jQuery - onClick не активируется

Я хочу, чтобы сообщение всплывало при нажатии на ссылку входа, но на удивление ничего не происходит. спасибо, Мик

<!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> 

ответ

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/

0

Вы должны использовать:

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

Потому что тогда код запускается на выполнение после загрузки страницы.

0

Все в JQuery должен быть внутри

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

За исключением определений функций. В противном случае вы пытаетесь зарегистрировать обработчик того, что еще не существует.

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); 

}); 

Более мощный подход был бы сделать новый JS-файл с "JQuery-Add-On-код":

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

//Your own JQuery-Code 
}); 
})(jQuery); 
Смежные вопросы