Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.01.2015, 23:19
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

Странное поведение jquery (событие .on)
Есть код

Код:
<html>
 <head>
  <title>Magic Hat</title>
	<script src="jquery-1.9.0.js"></script>
	<script language="JavaScript">
    function showRabbit() 
	{
      var hatImage = $("#topHat");
	  hatImage.attr("src", "rabbit-hat.gif");
	  var button = $("#hocusPocus");
	  button.attr("value", "Get back in that hat!");
	  button.on('click', hideRabbit);
    }
	
	function hideRabbit() 
	{
		var hatImage = $("#topHat");
		hatImage.attr("src", "tophat.gif");
		var button = $("#hocusPocus");
		button.attr("value", "Hocus Pocus!");
		button.on('click', showRabbit);
	}
  </script>
 </head>

 <body>
  <h1 align="center">Welcome to the DOM Magic Shop!</h1>
  <form name="magic-hat">
   <p align="center">
    <img src="topHat.gif" id="topHat"/>
    <br /><br />
    <input type="button" value="Hocus Pocus!" id="hocusPocus" onClick="showRabbit();"/>
   </p>
  </form>   
 </body>
</html>
По этому коду при нажатии на кнопку должна меняться и картинка и надпись на кнопке.

При первом запуске страницы при нажатии на кнопку запускается функция showRabbit, меняет картинку и текст кнопки.

Далее снова жмем и запускается функция hideRabbit, меняет картинку и текст кнопки.

И снова жмем кнопку уже ничего не происходит, хотя должна вызываться функция showRabbit. Консоль не выводит ошибку.
Ответить с цитированием
  #2 (permalink)  
Старый 09.01.2015, 23:29
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Метод "on" не меняет значение атрибута onClick, его действие похоже на addEventListener
Ответить с цитированием
  #3 (permalink)  
Старый 09.01.2015, 23:31
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

т.е. выходит надо удалить текущее значение и установить новое?
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2015, 00:43
Интересующийся
Отправить личное сообщение для lawer85 Посмотреть профиль Найти все сообщения от lawer85
 
Регистрация: 09.01.2015
Сообщений: 12

Все сделал как надо!

function showRabbit() 
	{
      var hatImage = $("#topHat");
	  hatImage.attr("src", "rabbit-hat.gif");
	  var button = $("#hocusPocus");
	  button.attr("value", "Get back in that hat!");
	  button.off("click", showRabbit);
	  button.on("click", hideRabbit);
    }
	
	function hideRabbit() 
	{
		var hatImage = $("#topHat");
		hatImage.attr("src", "tophat.gif");
		var button = $("#hocusPocus");
		button.attr("value", "Hocus Pocus!");
		button.off("click", hideRabbit);
		button.on("click", showRabbit);
	}
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2015, 12:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

lawer85,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   img{
     height: 200px
   }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       var button = $("#hocusPocus"), img = $("#topHat")[0], n = 1;
       button.click(function() {
         n ^= 1;
         button[0].value = n ? "Hocus Pocus!" : "Get back in that hat!";
         img.src = n ? "http://www.maxi-gif.com/gif-anime/objets/objets-magies-00003.gif" : "http://img.saraivaconteudo.com.br/Clipart/Photo/138/34521_.jpg";
      });
});


  </script>
</head>

<body>   <h1 align="center">Welcome to the DOM Magic Shop!</h1>
  <form name="magic-hat">
   <p align="center">
    <img src="http://www.maxi-gif.com/gif-anime/objets/objets-magies-00003.gif" id="topHat"/>
    <br /><br />
    <input type="button" value="Hocus Pocus!" id="hocusPocus" />
   </p>
  </form>
</body>

</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение jQuery borodatych Javascript под браузер 5 27.02.2014 11:47
Кроссбраузерная обертка AttachEvent Dim@ Ваши сайты и скрипты 13 21.08.2012 21:21
jQuery: событие по второму подрят клику timyrio Общие вопросы Javascript 23 02.05.2011 01:11
Странное поведение jquery Ziki jQuery 3 02.12.2010 21:09
Плагин JQuery tabs как подписаться нв событие перекл.вкладок xela1980 jQuery 6 15.12.2009 18:00