Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2014, 20:33
Новичок на форуме
Отправить личное сообщение для Kolyl Посмотреть профиль Найти все сообщения от Kolyl
 
Регистрация: 13.07.2010
Сообщений: 2

Переключить туда и обратно
Всем доброе время суток.
Есть задача, при клике менять картинку одну на другую.
В коде ниже все работает и при клике картинка меняется, но только один раз.
Как сделать чтобы картинка менялась каждый раз при клике по ней.
Картинки выводятся в цыкле.

<span class="visible"><img src="../img/site/visible.png" title="222" /></span>
<span class="visible"><img src="../img/site/visible.png" title="222" /></span>
<span class="visible"><img src="../img/site/visible.png" title="222" /></span>
<span class="visible"><img src="../img/site/visible.png" title="222" /></span>
<span class="visible"><img src="../img/site/visible.png" title="222" /></span>


$('.visible img').each(function() {
    $(this).click(function (){
        var url = '../img/site/invisible.png';//новое фото
        var title = '111';//новый тайтл для фото
        $(this).attr('src', url).attr('title', title);
    });
});
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2014, 21:35
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Kolyl
Как сделать чтобы картинка менялась каждый раз при клике по ней.
поставить условие догадаться проблематично?
для опыта можешь попробовать реализовать/подсмотреть как реализован http://api.jquery.com/toggle-event/ , не забудь обратить внимание на слова
Цитата:
version deprecated: 1.8, removed: 1.9
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2014, 22:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124


plugin toggle for jquery или почему не работает toggle

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

  <script>
$.fn.oldtoggle = function() {
        var b = arguments;
        return this.each(function(i, el) {
          var a = function() {
                var c = 0;
                return function() {
                    b[c++ % b.length].apply(el, arguments)
                }
            }();
            $(el).click(a)
        })
    };
    $(function() {
        $('.visible img').oldtoggle(function() {
            this.src = 'http://javascript.ru/forum/images/smilies/dance3.gif';
            this.title = '111'
        }, function() {
            this.src = 'http://javascript.ru/forum/images/smilies/victory.gif';
            this.title = '222';
        })
    });
  </script>
</head>

<body>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>


</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2014, 23:33
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572


<style>
.toggle{position: reltive; display:inline-block;}
.toggle input {
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  position:absolute;
  z-index:2;
  cursor:pointer;
  opacity:0;
  filter:alpha(opacity=0);
}
.toggle>img{display:none;}
.toggle input:checked + img {
  display:block;
}
.toggle input:checked ~ span {
  display:none;
}
</style>
<span class="toggle">
    <input type="checkbox"/>
    <img src="http://javascript.ru/forum/images/smilies/dance3.gif" title="222" />
    <span><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
</span>
<span class="toggle">
    <input type="checkbox"/>
    <img src="http://javascript.ru/forum/images/smilies/dance3.gif" title="222" />
    <span><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
</span>
<span class="toggle">
    <input type="checkbox"/>
    <img src="http://javascript.ru/forum/images/smilies/dance3.gif" title="222" />
    <span><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="222" /></span>
</span>
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2014, 00:00
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

каждому объекту по toggle-у
<script>
Object.prototype.toggle = function () {
	var args = arguments;
	var length = args.length;
	var counter = this.counter;
	this.addEventListener("click", function () {
		if ( !counter || counter == length ) counter = 0;
		args[counter++]();
	});
}

document.addEventListener("DOMContentLoaded", function () {
	var images = document.querySelectorAll(".visible img");
	Array.prototype.map.call(images, function (img) {
		img.toggle(
			function () {
				img.src = 'http://javascript.ru/forum/images/smilies/dance3.gif';
				img.title = '111'
			},
			function () {
				img.src = 'http://javascript.ru/forum/images/smilies/write.gif';
				img.title = '222';
			},
			function () {
				img.src = 'http://javascript.ru/forum/images/smilies/victory.gif';
				img.title = '333';
			}
		);
	});
});
</script>

<body>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2014, 00:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

bes,
Poznakomlus,
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2014, 00:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

bes,
this
<script>
Object.prototype.toggle = function () {
	var args = arguments;
	var length = args.length;
	var counter = 0;
	this.addEventListener("click", function () {
		if (counter == length ) counter = 0;
		args[counter++].call(this);
	});
}

document.addEventListener("DOMContentLoaded", function () {
	var images = document.querySelectorAll(".visible img");
	Array.prototype.map.call(images, function (img) {
		img.toggle(
			function () {
				this.src = 'http://javascript.ru/forum/images/smilies/dance3.gif';
				this.title = '111'
			},
			function () {
				this.src = 'http://javascript.ru/forum/images/smilies/write.gif';
				this.title = '222';
			},
			function () {
				this.src = 'http://javascript.ru/forum/images/smilies/victory.gif';
				this.title = '333';
			}
		);
	});
});
</script>


<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>
<span class="visible"><img src="http://javascript.ru/forum/images/smilies/victory.gif" title="333" /></span>

Последний раз редактировалось рони, 16.12.2014 в 01:01. Причина: this.counter там ни к чему
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2014, 00:52
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

рони, да, и = this.counter там ни к чему
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2014, 01:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

bes,
исправил counter
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2014, 10:01
Новичок на форуме
Отправить личное сообщение для Kolyl Посмотреть профиль Найти все сообщения от Kolyl
 
Регистрация: 13.07.2010
Сообщений: 2

Спасибо, помогло.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинки кнопки при нажатии и обратно при повторном нажатии mff Общие вопросы Javascript 15 03.05.2018 14:12
изменить цвет фона и обратно... cesarr Events/DOM/Window 11 04.04.2017 14:19
Бегущая строка слева на право и обратно ROKKIBALBOA Элементы интерфейса 3 27.04.2014 18:40
Отправить туда от куда пришел с помощью document.referrer rabinzonoff Общие вопросы Javascript 0 17.01.2014 10:13
Передача переменной из JS в PHP и обратно Gregorian Общие вопросы Javascript 5 11.09.2012 16:12