Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Странности со скриптом jQuery... (https://javascript.ru/forum/jquery/28913-strannosti-so-skriptom-jquery.html)

Deff 14.06.2012 17:14

Цитата:

Сообщение от Alexanderos
А два раза не приходится кликать чтобы панель задвинуть вверх из нижнего положения?

Есть такое - а выложите ка Вашу клик функцию по кнопке, тут её нет в примере

Alexanderos 14.06.2012 17:18

Все что используется указано в коде чуть выше... там нет функций своих... использую конструкцию .toggle

Для работы с cookie использую вот этот готовый скрипт: http://test.kridom.ru/sites/all/them...uery.cookie.js

Для удобства приведу часть кода тут:
$('#btn-panel-slide').toggle(function () {	
		$("#panel .region-inner").animate({top:"0px"}, 500);
		$('#btn-panel-slide').addClass("active");
		$.cookie('cookie_panel_status', 'active', { expires: 7, path: '/' });
	}, function() {
		$("#panel .region-inner").animate({top:-($("#panel .region-inner").height() - 20) + "px"}, 500);
		$('#btn-panel-slide').removeClass("active");
		$.cookie('cookie_panel_status', '', { expires: 7, path: '/' });
	});



UPD: пробовал обрабатывать событие .click но что-то там совсем запутался и не получилось ничего путного...

Deff 14.06.2012 17:35

Alexanderos,
Мну думает, что это из-за того -, что Вы элемент включаете, тестя куки не через toggle - каким макаром оно узнает что Вы его включали ? вот и получается клик двух разовый,
imxo проще тестить куки и сворачивать - разворачивать двумя функциями в зависимости от кука.. нафига там toggle ?

По клику на кнопку - анализируете кук, меняете кук и направляете на ту или иную функцию

Alexanderos 14.06.2012 17:47

Цитата:

Сообщение от Deff (Сообщение 181432)
Alexanderos,
... По клику на кнопку - анализируете кук, меняете кук и направляете на ту или иную функцию

Делал так изначально... хорошо, переделаю все обратно и попробую посмотреть что получится...

Я верно мыслю?

$("#btn-panel-slide").click (function () {

     ЕСЛИ в куках есть 'ACTIVE' - задвинуть панель
     ИНАЧЕ выдвинуть панель

});

Deff 14.06.2012 18:08

Alexanderos,
Секунду - а если при активной куке... просто добавлять параллельно и программный клик ?

Deff 14.06.2012 18:12

$(document).ready(function(){
	if (($.cookie('cookie_panel_status')) == 'active') {
		$("#panel .region-inner").animate({top:"0px"}, 1);
*!*
		$('#btn-panel-slide').click();
*/!*
	}
	else {
		$("#panel .region-inner").animate({top:-($("#panel .region-inner").height() - 20) + "px"}, 1);
	}	
	
	$('#btn-panel-slide').toggle(function () {	
		$("#panel .region-inner").animate({top:"0px"}, 500);
		$('#btn-panel-slide').addClass("active");
		$.cookie('cookie_panel_status', 'active', { expires: 7, path: '/' });
	}, function() {
		$("#panel .region-inner").animate({top:-($("#panel .region-inner").height() - 20) + "px"}, 500);
		$('#btn-panel-slide').removeClass("active");
		$.cookie('cookie_panel_status', '', { expires: 7, path: '/' });
	});
});

Alexanderos 14.06.2012 18:44

Добавил строку - изменений не наблюдаю.

Deff 14.06.2012 19:49

Alexanderos,
Нун вот так:
$(document).ready(function(){
	var panelHeight = $("#panel .region-inner").height();
	var panelTop = panelHeight - 20;

	if (($.cookie('cookie_panel_status')) == 'active') {
*!*
		$("#panel .region-inner").animate({top: 0 + "px"}, 1, "linear", function(){
		  $('#btn-panel-slide').click()
		});
*/!*
	}
	else {
		$("#panel .region-inner").animate({top: "-" + panelTop + "px"}, 1);
	}
	
	$('#btn-panel-slide').toggle(function () {
		$('#btn-panel-slide').addClass("active");
		$.cookie('cookie_panel_status', 'active', { expires: 7, path: '/' });
		$("#panel .region-inner").animate({top: 0 + "px"}, 500);

	   
	}, function() {

		$("#panel .region-inner").animate({top: "-" + panelTop + "px"}, 500);
		$('#btn-panel-slide').removeClass("active");
		$.cookie('cookie_panel_status', '', { expires: 7, path: '/' });
	});

});

Deff 14.06.2012 20:23

Или даже так - покрасивше
$(document).ready(function(){
	var AnimateTime=500;
	var panelHeight = $("#panel .region-inner").height();
	var panelTop = panelHeight - 20;


	$('#btn-panel-slide').toggle(function () {
		$('#btn-panel-slide').addClass("active");
		$.cookie('cookie_panel_status', 'active', { expires: 7, path: '/' });
		$("#panel .region-inner").animate({top: 0 + "px"}, AnimateTime);

	   
	}, function() {

		$("#panel .region-inner").animate({top: "-" + panelTop + "px"}, AnimateTime);
		$('#btn-panel-slide').removeClass("active");
		$.cookie('cookie_panel_status', '', { expires: 7, path: '/' });
	});

	if (($.cookie('cookie_panel_status')) == 'active') {
		AnimateTime=1;
		$('#btn-panel-slide').addClass("active");
		$('#btn-panel-slide').click();
		AnimateTime=500;
	}
	else {
		$("#panel .region-inner").animate({top: "-" + panelTop + "px"}, 1);
	}
});

Alexanderos 18.06.2012 16:14

Deff, спасибо, все работает вроде как надо!


Часовой пояс GMT +3, время: 20:01.