2

コードを整理するために、たまたまメインの JavaScript ファイルの名前空間として記述しました。次に、そのファイルの関数のいくつかをカスタム JavaScript ファイルに呼び出したいとしますscript.js。問題は、名前空間のメソッドにアクセスできなかったことです。これが私のコード例です:

main.js

$( function() {
    "use strict"
     var Accordian = {
     slide : function() {
         $('h3').click( function() {
             $(this).next('div').slideToggle('1000');
             $(this).toggleClass('toggled');
         });
    },

    slideEaseOutBounce: function() {
         $('h3').click( function() {
              $(this).next().animate(
                  {'height' : 'toggle'}, 1000, 'easeOutBounce'
               );
               $(this).toggleClass('toggled');
         });
    },

    slideEaseInOutExpo: function() {
         $('h3').click( function() {
             $(this).next().animate(
                  {'height' : 'toggle'}, 1000, 'easeInOutExpo'
             );
             $(this).toggleClass('toggled');
         });
    }
});

そして、私は以下のscript.jsのように試しました

$(document).ready( function() {
    Accordian.slide();
});

更新しました:

リンクは次のとおりです。 http://jsnamespace.comyr.com/using-accordian.html

エラーメッセージが表示されます"ReferenceError: Accordian is not defined" どんな助けでも大歓迎です。

4

3 に答える 3

1

関数にカプセル化されているため、名前空間にアクセスできません。明らかにモジュール パターン を読んでみることをお勧めします。

JSFiddle: http://jsfiddle.net/R927K/

例:

    var Accordian = (function() {

     var Accordian = {
     slide : function() {
         alert('sliding');
         }
     };

         return Accordian;
}());

Accordian.slide();
于 2013-05-29T07:25:46.893 に答える