0

好的可怕的标题,但我想不出另一种描述。

我有以下代码:

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

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

正如你所看到的,我试图从 init 内部调用 anotherFunction 并有两种我试过但没有奏效的方法。那么我怎么能调用那个函数或者我的概念是错误的?

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

在单击处理程序中绝对调用它会改变事情,因为this在任何 jQuery 事件处理程序中都设置为导致事件的元素。

相反,请尝试使用以下模式:

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 回答