2010-05-11 3 views
-3

По какой-то причине, когда я вызываю эффект fade jQuery, он не работает. Что я делаю не так?jQuery: Fade not working

Эта функция делает все, что предполагается, кроме выцветания. Он вызывается в правильное время.

function move_to_term(original_course, helper, term) { 

    var cloned_course = original_course.clone(true); 

    original_course.addClass('already-scheduled').droppable("destroy"); 

    helper.fadeOut(function() { 
     cloned_course.appendTo(term).attr('style', '').fadeIn("slow"); 
    }); 

    cloned_course.draggable(); 
} 

UPDATE: Он терпит неудачу в обоих FF 3.5.9 и IE 8.

UPDATE 2:

Эта функция устанавливается быть обратным вызовом для drop событиечрезвычайных сбрасываемого в:

 var new_term = $(sprintf('<li class="term"><strong>%s</strong></li>', term["fields"]["name"])); 

     new_term.data('pk', term['pk']); 

     new_term.droppable({ 
      drop: function(event, ui) { 
       move_to_term(ui.draggable, ui.helper, $(this)); 
      }, 
      accept: function(draggable) { 
       return legal_for_term(draggable, $(this)) 
      }, 
      tolerance: 'pointer', 
      activeClass: 'legal-drop-term-active', 
      hoverClass: 'legal-drop-term-hover' 
     }); 

ОБНОВЛЕНИЕ 3: Текст занимает немного времени, чтобы изменить места, как будто происходит постепенное исчезновение, но просто не анимируется? Или, может быть, я полностью против этого.

UPDATE 4: Это работает очень хорошо, хотя и не достичь эффекта я надеялся:

function moveToTerm(original_course, helper, term) { 

    original_course.fadeOut('slow'); 

} 

Вот Droppable HTML:

<li class="term ui-droppable"> 
     <strong>Fall 2010</strong> 
     <li class="course">Computing Cultures</li> 
</li> 

Вот перетаскиваемый HTML:

<li class="course ui-draggable">Introduction to Web Design</li> 

Отмирание не поддерживается o n ui.helper объектов?

UPDATE 5: Хорошо, теперь все, что я хочу сделать, это выгорает клонированный объект:

function moveToTerm(original_course, helper, term) { 

    var cloned_course = original_course.clone(true); 

    original_course.addClass('already-scheduled'); 

    original_course.draggable("disable"); 
    cloned_course.draggable(); 

    cloned_course.appendTo(term).fadeIn("slow"); 
} 

Это не работает, но изменение fadeIn() к fadeOut() делает его работу. Зачем?

ИСПРАВЛЕНО:

Изменение:

cloned_course.appendTo(term).fadeIn("slow"); 

к:

cloned_course.appendTo(term).hide().fadeIn("slow"); 
+2

Без каких-либо знаний о том, что вы здесь проходите, это невозможно ответить ... –

+0

опубликуйте свою разметку html. – Sarfraz

+0

* «Может быть, из-за кода?» * Я осмелюсь сказать, что 'fadeIn' jQuery не просто принципиально нарушен. Немного больше контекста, как говорит Ник, будет ключом к получению помощи. Например, пример минималистичного сбоя. –

ответ

1

Попробуйте это:

helper.fadeOut('slow', function() { 
    cloned_course.appendTo(term).attr('style', '').fadeIn("slow"); 
}); 

Может ли это быть из-за кода?

Код библиотеки JQuery, нет, он не мог (конечно).

Не знаю, как контекст выполнения вашего кода я больше не могу помочь.

+0

Этого не должно быть. 'fadeOut()' будет работать отлично, принимая обратный вызов как единственный параметр. – user113716

+0

@patrick прав - '.fadeOut (func)' действительно '' .animate ({opacity: "hide"}, func) ', [который обрабатывается] (http://api.jquery.com/animate/). –

+0

Да, это не проблема. –

0

Я бы попробовал позвонить ему без звонка attr('style', '').Я бы предположил, что это может определенно мешать выцветанию, так как затухание работает, устанавливая встроенный css opacity (плюс еще одна магия для этого).

Редактировать

Это трудно сказать (так как я не могу проверить его и описание может быть понятнее). Не привязали бы в hide() помощь?

cloned_course.appendTo(term).attr('style', '').hide().fadeIn("slow"); 
+0

Этого не должно быть. 'attr ('style', '')' вызывается на отдельный элемент. Не было бы никакого поперечного эффекта. – user113716

+0

@patrick: * "[Это] вызвано отдельным элементом" * Это? Выглядит прикованным ко мне, независимо от того, к чему применяется attr, также относится к тому, к чему применяется fadeIn. Не говорю, что Якуб прав, что это не так, но ... –

+0

Да, удаление '.attr ('style', '')' не решает проблему. –