2012-02-19 3 views
0

Это моя первая попытка написать плагин jQuery, который, как предполагается, будет исчезать из тела, переключить класс, а затем снова открыть тело и позволить пользователю переключать класс обратно. К сожалению, на данный момент он не может переключать класс более одного раза. Как это исправить?Почему мой «плагин» выполняется только один раз?

(function($) { 

    $.fn.flashClass= function(classId, element){ 

     element="body"; //overriden for testing purpose 
      $(this).click(function() { 
       $(element).fadeOut("slow", function() { 
        $(element).toggleClass(classId); 
       }); 
       $(element).fadeIn("slow", function() { 
        $(element).scrollTop(height); 
       }); 
      }); 
    }; 
})(jQuery); 

EDIT:

В конце концов, оказалось, что я вставил неправильный фрагмент с scrollTop обратного вызова неопределенной переменной высоты. После удаления и переключения .click на .on функция работает как шарм. Однако меня все еще интересует, почему он работал только один раз.

+0

Что заставляет вас думать, что Что происходит во второй раз? – Pointy

+2

Почему вы получаете параметр элемента, если вы переопределяете его с помощью 'body' ??? – gdoron

+0

Где вы меняете классы ?! – gdoron

ответ

1

Попробуйте жить() или(), как следующее: "не может переключить класс больше, чем когда-то"

$(this).on('click',function() {... 

Вместо того

$(this).click(function() {... 
+2

'live()' устарел. Используйте 'delegate()' или 'on()' вместо –

+0

@Pointy '$ (this) .click (function() {' ...? –

+0

@RoryMcCrossan 'delegate' также устарел, afaik. – Johan

Смежные вопросы