Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2013, 16:04
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Не работает toggle
День добрый, я вот пишу скрипт чтоб по клику на блок изображение сворачивалось и текст блока менялся, а при повторном клике блок разворачивался и текст блока обратно менялся.
Вот сам код:
$('#div_tog').toggle(function(){
$('#div_img').fadeOut(1000);
$(this).text('Развернуть');
}, function(){
$('#div_img').fadeIn(1000);
$(this).text('Свернуть');
});
Вставляю вместо toggle hover, сам код работает, а когда toggle сам блок мгновенно сворачивается и всё, в чём здесь может быть проблема и как осуществить этот скрипт с помощью toggle?
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2013, 16:26
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Потому что в последней версии jQuery больше нет этого метода (по крайней мере в этом применении)
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2013, 16:33
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Это катастрофа! А как же тогда мне осуществить данную задачу, есть идеи?
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2013, 16:37
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Самое простое решение - флаг.
var flag = new Boolean(true);//Создаем логическую переменную (со значением true)

$('selector').click(function() {
  if (flag) {//Если flag == true
    flag = false;//Меняем значение переменной flag
    func1.call(this);//Вызываем func1 с контекстом этой функции (т.е. в вызванной функции this = this этой функции)
  } else {//Если flag не равно true
    flag = true;
    func2.call(this);
  }
  return false;
});

function func1() {...};
function func2() {...};


Но в общем никто не мешает вам пользоваться не последней версией jQuery.

Последний раз редактировалось tsigel, 17.04.2013 в 17:32.
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2013, 16:44
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

jQuery написан на javascript и никакой магии в нем нет. Любой его метод можно написать самостоятельно.
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2013, 16:55
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Сообщение от tsigel Посмотреть сообщение
jQuery написан на javascript и никакой магии в нем нет. Любой его метод можно написать самостоятельно.
Хорошо бы ещё понять как это сделать!
Потому что у меня чё-то всё равно не получается данную задачу решить.

Последний раз редактировалось Алек, 17.04.2013 в 17:01.
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2013, 17:07
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Вы решение с флагом пробовали? Что говорит консоль? Сделайте тестовый пример.
Ответить с цитированием
  #8 (permalink)  
Старый 17.04.2013, 17:24
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Первый раз пробовал, ошибка была в if (flag) иф проперти ай ди,
Потом ошибки не было, но скрипт не работал, сейчас вот так делаю:
var flag = new Boolean(true);

$('#formHide').click(function(){
if (flag) {
flag = false;
func1.call(this);
}else {
flag = true;
func2.call(this);
}
return false;
});

function func1(){
$('#forheader').fadeOut(3000)};
function func2(){
$('#forheader').fadeIn(3000)};
Всё заработало!
Спасибо бааальшое. flag это реально круто.
Ответить с цитированием
  #9 (permalink)  
Старый 17.04.2013, 17:26
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Но я всё равно не очень понимаю как это работает, буду разбираться сейчас на другом примере. Если есть ссылки на материалы по этой теме, поделитесь плиз.
Ответить с цитированием
  #10 (permalink)  
Старый 17.04.2013, 17:35
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Я добавил комментарии к своему коду (выше).

В данном коде я использовал:
call,
boolean,
if
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена значения в store страно работает I3ev ExtJS 0 09.12.2012 14:22
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59