0

次の方法でファイル「Site.js」があります。

function Init() {
  $(document).ready(function() {
    //some init actions here
  });
}
function jQuery.fn.DivToggle(div) {
  $(div).toggle('fast');
  //some other animation code here
}

私のIndex.cshtmlファイル(私はasp.net mvcを使用しています)には、これがあります:

<!DOCTYPE html>
<html>
  <head id="Head1" runat="server">
    <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/Site.js")" type="text/javascript"></script>
  </head>
  <body>
    <script type="text/javascript">
      $(function () {
        Init();
      });
    </script>
  </body>
</html>

プロジェクトを実行すると、「Microsoft JScript ランタイム エラー: 'Init' は未定義です」というエラーが表示されます。

私が間違っていることは何か分かりますか?

4

3 に答える 3

3

Initに構文エラーがあるため、 は定義されていませんSite.js

function jQuery.fn.DivToggle(div) {
  $(div).toggle('fast');
  //some other animation code here
}

あなたは実際にそれを行うことはできません. そのはず:

jQuery.fn.DivToggle = function(div) {
  $(div).toggle('fast');
  //some other animation code here
};

PS$(function(){は と同じ$(document).ready(function(){です。$(document).ready(function(){関数の内部は必要ありませんInit

于 2012-04-13T18:32:01.930 に答える
1

本当の問題はDivToggle()関数にあると思います。そのコードを次のように変更する必要があります。

(function( $ ) {
  $.fn.DivToggle = function() {
     $(this).toggle('fast');
  };
})( jQuery );

次に、セレクターを作成して呼び出すことにより、DivToggleを呼び出すことができます。したがって、ページ内のすべてのdivタグでこれを実行する場合は、次のようにします。

$('div').DivToggle();

カスタムプラグインの作成に関するドキュメントは次のとおりです。http://docs.jquery.com/Plugins/Authoring

おそらく、Init()とdocument.ready()を呼び出す方法を変更する必要があります。実際、Init()関数は現在実際には何もしていません。私はあなたがあなたのコードをこれに変えることができると思います、そしてそれはあなたが望むことを達成するでしょう:

<script type="text/javascript">

//create the DivToggle() function
(function( $ ) {
  $.fn.DivToggle = function() {
     $(this).toggle('fast');
  };
})( jQuery );

$(function () {
    //call DivToggle() on all <div> tags when the page loads
    $('div').DivToggle();
});

</script>
于 2012-04-13T18:33:50.917 に答える
0

JavaScript の名前空間を試してください:

 StackOverflow = {

      function Init(){

      }

      return {
        Init: Init
      };
 }();

関数を呼び出す

$(function(){
     StackOverflow.Init();
});
于 2012-04-13T18:40:42.000 に答える