0

ひどいタイトルですが、別の説明は思いつきませんでした。

私は次のコードを持っています:

jQuery( document ).ready( function( $ ) 
{
    $.myNamespace = {
          init: function()
          {

             $('.button').click(function() {
                  this.anotherFunction();
             });
          },
          anotherFunction: function()
          {
               alert('insidefunction');
          }
    }
    $.myNamespace.init();
});

ご覧のとおり、init内からanotherFunctionを呼び出そうとしており、2つの方法を試しましたが、機能しませんでした。では、どうすればその関数を呼び出すことができますか、それとも私の概念は間違っていますか?

4

2 に答える 2

1
jQuery( document ).ready( function( $ )
{
    $.myNamespace = {
          init: function()
          {
             var a=this;
             $('.button').click(function() {
                  a.anotherFunction();
             });
          },
          anotherFunction: function()
          {
               alert('insidefunction');
          }
    }
    $.myNamespace.init();

});

http://jsfiddle.net/ZpAtm/2/

于 2012-05-04T02:39:27.550 に答える
0

thisjQueryイベントハンドラー内ではイベントの原因となった要素に設定されているため、クリックハンドラー内で絶対に呼び出すと状況が変わります。

代わりに、次のパターンを使用してみてください。

jQuery(document).ready(function($) {
    $.myNamespace = (function() {
        function init() {
            $('.button').click(function() {
                anotherFunction();
            });
        }

        function anotherFunction() {
            alert('insidefunction');
        }

        // return an object with all the functions you want 
        // available publically as properties. Don't include
        // any "private" functions.
        return {
            init: init,
            anotherFunction: anotherFunction
        };
    })();
    $.myNamespace.init();
});​
于 2012-05-04T03:14:30.890 に答える