2013-08-14 1 views
0

Вот fiddle для ниже.hover image с помощью jQuery's toggle() не работает в jsfiddle

Причиной создания этого jsfiddle является то, что animate() не работает внутри функции fadeOut(), но работает вне:

$(".fader").click(function (e) { 
    var self = this; 
    $('.fader').not(self).fadeOut(function() { 
     $(self).animate({top: "220",left: "200"}); // doesn't work 
     LoadContent(fader.attr('id')); // works 
    }); 

    $(this).animate({top: "220", left: "200"}); // works 
}); 

EDIT: хорошо, я вижу почему-то теперь, что одушевленные() не работать - Я вызывал неправильный элемент (вместо self, который исправил jsfiddle). но все же я не знаю, почему toggle() не работает в jsfiddle.

ответ

0

Ваш jsFiddle неправ. Прежде всего, вы не используете библиотеку jQuery, поскольку файл, на который вы ссылаетесь в первой строке, не существует. Во-вторых, вы пытаетесь применить событие click для объекта с классом .fader, но не тот, который был нажат. И нет другого объекта с этим классом. Вместо этого используйте parents(). И функция (как и вызов) «внутри» fadeOut запускается в конце fadeOut, поэтому ваш код выглядит бесполезным.

Если вы хотите, чтобы оживить и FADEOUT в то же время, использовать только анимацию:

$('.fader').animate({ opacity: 0, top: "-1000px", left: "-1000px" }, 'slow'); 
+0

так как я применяю нажмите событие для объекта, который нажал вместо всего класса? Я использую '$ (this)', потому что я думал, что это относится только к одному объекту (как в соответствии с этим [thread] (http://stackoverflow.com/questions/16166561/jquery-change-for-only-clicked -element-not-all-with-the-same-class)), я ошибаюсь? 'animate' предназначен для запуска в конце' fadeOut' - это нормально для меня, поэтому nvm об этом. –

+0

$ (это) хорошо, но ваш селектор $ ('. Fader'). Not (this) означает -> все объекты, имеющие класс фейдера, но не тот. Это не имеет смысла при назначении события click, потому что только после щелчка он знает, что такое 'this'. Просто назначьте событие click для '.fader', а затем в функции click используйте' $ (this) 'или' this'. Если вы хотите затухать только вещи внутри 'this', используйте' $ (this) .children() '; –