Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2013, 15:01
Интересующийся
Отправить личное сообщение для wreder Посмотреть профиль Найти все сообщения от wreder
 
Регистрация: 05.09.2013
Сообщений: 22

Зависимость от значения счетчика
Здравствуйте! Есть галерея, страницы которой прокручиваются двумя кнопками "next" и "back". И есть счетчик прокрутки страниц - он показывает текущий номер страницы.

И никак не могу сообразить как блокировать кнопки прокруток если страницы закончились. Пытаюсь привязаться к значению счетчика, точнее к тому что он показывает, дескать:
- номер первой стр. = блокировка кнопки "back"
- номер последней стр. = блокировка кнопки "next"...

<script>
$('#counter_body').html("<span id='counter'>1</span><span>/3</span>"); /*это представляет из себя сам счетчик, единица меняется в зависимости от действий кнопок*/

	  $('#next').click(function(event){ /*кнопок вперед*/
		 $('#line').animate({  /*меняет положение страниц галереи*/		 
		    'margin-left':'-=300px'  
		 }, 400);
		$('#counter').html(+$('#counter').html()-1); /*меняет номер страницы*/
	  });


	  $('#back').click(function(event){ /*кнопок назад*/
		 $('#line').animate({		 
		    'margin-left':'+=300px'  
		 }, 400);
		$('#counter').html(+$('#counter').html()-1);


        /*пытаюсь привязаться к счетчику чем-то типа*/
           
            var resultHtml = $('#counter').html(+$('#counter').html()+1);
            if(resultHtml !="1"){	  	  
	          $('#back').attr("disabled","disabled");
                  }
		    else {
		   $('#back').removeAttr("disabled");				 
		  };              
	   });
</script>
<body>
<div id="counter_body"></div> //тело счетчика 
</body>


Последний код - это только набросок идеи, чего хочется сделать... т.е. пока коряво....

Помогите пожалуйста советом..... как причесать ту корявость? Перерыл кучу тем... ниче не вдохновило! Заранее благодарен!

P.S. Могу довольствоваться ссылкой на аналогичное событие... сами мы не гордые...

Последний раз редактировалось wreder, 23.09.2013 в 15:10.
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2013, 15:38
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Не работает т.к. вы не вызываете код
/*пытаюсь привязаться к счетчику чем-то типа*/
           
            var resultHtml = $('#counter').html(+$('#counter').html()+1);
            if(resultHtml !="1"){	  	  
	          $('#back').attr("disabled","disabled");
                  }
		    else {
		   $('#back').removeAttr("disabled");				 
		  };              
	   });

при клике на #back #next. Поэтому этот код отрабатывает только при загрузке странице и посуте ни на что не влияет. Оформите его в функцию и вызвоните на клик по кнопкам #back #next
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2013, 16:08
Интересующийся
Отправить личное сообщение для wreder Посмотреть профиль Найти все сообщения от wreder
 
Регистрация: 05.09.2013
Сообщений: 22

Tek, да, наверное сразу не видно..... но этот код в самом деле висит на клике по '#back'....просто я для наглядности отделил его от основного кода.... и видимо зря.... my bad...

т.е. код при клике и должен вызываться или все таки я что то не так оформил???


аааа.... когда оформил его в отдельную функцию (отдельно от animate) то все заработало.....

да, Спасибо! я то думал что сам код корявый....

Последний раз редактировалось wreder, 23.09.2013 в 16:13.
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2013, 16:29
Интересующийся
Отправить личное сообщение для wreder Посмотреть профиль Найти все сообщения от wreder
 
Регистрация: 05.09.2013
Сообщений: 22

Tek,
ан нет!....действительно сам код корявый....в отдельной функции он почему-то меняет значение счетчика, а должен зависеть от него....ммм

$('#back').click(function(event){
		  var resultHtml = $('#counter').html(+$('#counter').html()+1);
		   if(resultHtml !="1"){	  	  
	       $('#back').attr("disabled","disabled");
		   } else {			   
				  $('#back').removeAttr("disabled");				 
				  }		  
	  });


если же первый вариант:

$('#back').click(function(event){
		 $('#line').animate({		 
		    'margin-left':'+=300px'  
		 }, 400);
		$('#counter').html(+$('#counter').html()-1);	  
		  var resultHtml = $('#counter').html(+$('#counter').html()+1);
		   if(resultHtml !="1"){	  	  
	       $('#back').attr("disabled","disabled");
		   } else {			   
				  $('#back').removeAttr("disabled");				 
				  }		  
	  });


то вообще тишина...
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2013, 16:44
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Поменяй на
.attr("disabled",false)

.attr("disabled",true)

Последний раз редактировалось Tek, 23.09.2013 в 16:49.
Ответить с цитированием
  #6 (permalink)  
Старый 23.09.2013, 16:59
Интересующийся
Отправить личное сообщение для wreder Посмотреть профиль Найти все сообщения от wreder
 
Регистрация: 05.09.2013
Сообщений: 22

Tek,
$('#back').click(function(event){
         $('#line').animate({
            'margin-left':'+=300px' 
         }, 400);
        $('#counter').html(+$('#counter').html()-1);
          var resultHtml = $('#counter').html(+$('#counter').html()+1);
           if(resultHtml !="1"){  
               $('#back').attr("disabled",false);
           } else { 
                  $('#back').attr("disabled",true);                
                 } 
      });


так? но что-то не особо с разницей....
Ответить с цитированием
  #7 (permalink)  
Старый 23.09.2013, 17:30
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

выведите алертом что находиться в resultHtml
Ответить с цитированием
  #8 (permalink)  
Старый 24.09.2013, 13:44
Интересующийся
Отправить личное сообщение для wreder Посмотреть профиль Найти все сообщения от wreder
 
Регистрация: 05.09.2013
Сообщений: 22

Tek, что-то бился я бился... и с алертом.... и так ничего от счетчика не получил..... Но сама задача отлично решилась с помощью var position

$('#back').click(function(event){
	  if (!loadingFlag){ /*защита от повторных нажатий*/
		 loadingFlag = true; /*выставляем блокировку click*/			  
		 $('#line').animate({		 
		    'margin-left':'+=300px'  
		 }, 400, function(){
			loadingFlag = false;  /* снимаем блокировку click */			 
		 });
		$('#counter').html(+$('#counter').html()-1);
		
		 var position = $('#line').css('margin-left');
		   if(position == '-300px'){		  
	       $('#back').attr("disabled",true);
		   } else {			       		   
				  $('#back').attr("disabled", false);				 				 
				  }					  
	     }		
	  return false;	
	  });


правда, как видно из кода, пришлось повесить флаг, от многократных click по кнопкам..... со счетчиком это было бы не нужно.... но в любом случае задача решена!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
получение значения css-свойств demoniqus Общие вопросы Javascript 0 12.02.2012 12:27
получение значения из классов karmis Events/DOM/Window 1 14.10.2011 19:09
Вытащить со страницы все значения name и value из тегов <input> qwr938 Общие вопросы Javascript 8 13.02.2011 15:16
как отобразить в окне значения счетчика во время выполнения цикла FOR Алекс97 Общие вопросы Javascript 5 06.09.2008 10:36