2014-09-27 3 views
0

내 페이지에 일부 요소가 있습니다. JQuery 확장 함수를 통해 해당 함수를 호출하고 싶습니다.setTimeout 즉시 실행

(function ($) { 
     $.fn.enable = function (delay) { 
      console.log(delay); //logs 3000 
      setTimeout(function (elem) { 
       console.log(elem); 
       elem.css("opacity", "1"); 
      }(this), delay); 
      return this; 
     }; 
    })(jQuery); 

아시다시피, JQuery와 객체를 통해 enable 함수를 선언 :이 기능 declarement 있습니다. 잠시 후

$("#start").enable(3000); 

기능 enable 실행하지만, 코드 function (elem)... 실행 내부 아니라, 즉시 실행 : 지금은 이런 식으로 뭔가를 호출 할 때!

어떻게 그리고 왜 ??

+1

'(this) '로 익명 함수를 끝내면 함수가 아니라 반환 값을 전달하게됩니다. – sje397

답변

3

"함수 (elem)"함수를 arguement로 제공하는 대신 호출하고 있기 때문입니다. 시도해보십시오

(function ($) { 
     $.fn.enable = function (delay) { 
      console.log(delay); //logs 3000 
      var elem = this; 
      setTimeout(function() { 
       console.log(elem); 
       elem.css("opacity", "1"); 
      }, delay); //you should not call a function here 
      return this; 
     }; 
    })(jQuery); 
로 말하면