2016-10-11 13 views
0

私は新しいものを試しています。私はいつも同じ機能を持つHTMLページを作っていますので、私が作ったJQueryプラグインを使用して作業を単純化したいと思います。私はこれをしようとしていますし、私はこれを行う方法の多くのWebページを読んでいると私はwork.Thisないのか分からないこと Emu.jsファイルです:JQueryプラグインを動作させようとしていません

$.fn.loop = function(time,callback) { 
     setInterval(this,time); 
     if(callback !== 'undefined' && typeof(callback) == "function") { 
      callback 
     } 
    }; 

そして、これはEmu.htmlファイルです:

<!DOCTYPE html> 
    <html> 
    <head> 
     <script src="JQuery.js" ></script> 
     <script src="Emu.js" ></script> 
    </head> 
    <body onload="do_it()"> 
     <p></p> 
     <script type="text/javascript"> 
      function hello() { 
       $("p").append("Hello!"+"<br>") 
      } 

      function do_it() { 
       $(hello).loop(2000) 
      } 
     </script> 
    </body> 
    </html> 
+0

コールバックを実行しようとしている場合は、perensを追加する必要があります。 'callback()' –

+0

'$(hello)'は意味がありません。 'hello'は関数です。 –

+0

あなたはあなたのコードのjsfiddleまたはcodepenを提供してください...質問、あなたdo_it関数で何をしようとしていますか?$(hello)のコードを持っています – Geeky

答えて

2
  • jQueryのプラグイン/メソッド(チュ.show()のようなST)を基準として、jQueryのElementオブジェクトを期待する:$("p").loop()
  • 右jQueryのthis要素オブジェクトを参照するためにあなたのif
  • 使用$.proxy内のsetIntervalものを入れて(そうthissetIntervalwindowオブジェクトを指すようになります)
  • hello() jQueryの $(this)原因 thisを使用すること自由に感じインサイド
  • はHTMLParagraphElement上のJSリファレンスを参照"p"
あなたはあなたの自己を避けることができましたの

$.fn.loop=function(time,callback) { 
 
    if(callback !== 'undefined' && typeof callback === "function") { 
 
    setInterval($.proxy(callback, this), time); 
 
    } 
 
}; 
 

 

 
jQuery(function($) { // Use DOM ready instead of <body onload="do_it()"> 
 

 
    function hello(){ 
 
    $(this).append("Hello!<br>"); 
 
    } 
 

 
    $("p").loop(2000,hello); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p></p>

いくつかのエラーは、すなわち最初のパラメータは、コールバックfunctionsetIntarval(fn, time)ことになっているWindowTimers.setIntervalの使用です。 thisはあなたのケースでは機能しません。

関連する問題