-2

我将构建一个应用程序,因为它不是太丰富,否则我可以为此目的使用 angularjs。我想将我的 JS 代码组织成适当的模块化编程方法。

例如

   var SignUpModule = {
     elem: $('#id'), // unable to access jquery object here
     init: function (jQuery) {
       alert(jQuery('.row').html());
    }
};

 var application = {
modules: [],
addModule: function (module) {
    this.modules.push(module);
},
run: function (jQuery) {
    _.each(this.modules, function (module) {

        //Iterate each module and run init function
        module.init(jQuery);
    });


    }
  }


jQuery(document).ready(function () {
    application.addModule(SignUpModule);//add module to execute in application

    application.run(jQuery);//Bootstrap application

});

现在请看一下我已经用实际代码更新了我的问题

4

1 回答 1

0

您所做的最大错误是使用方法采用的匿名函数的匿名第一个参数$.each。第一个参数只是索引,第二个参数是您要查找的元素。您可以在下面找到工作代码。

不,你不需要jQuery到处传递对象。它是全球性的。它已经无处不在。您可以在下面的代码中看到它。

var SignUpModule = {
  elem: $('.row'), //jQuery works fine here
  init: function () {
    alert(this.elem.html());
  }
};

var application = {
  modules: [],
  addModule: function (module) {
    this.modules.push(module);
  },
  run: function () {
    $.each(this.modules, function (index, module) { //this function takes 2 parameters
      //Iterate each module and run init function
      module.init();
    });
  }
}

//document.ready
$(function () {
    application.addModule(SignUpModule);//add module to execute in application
    application.run();//Bootstrap application
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">alert <b>me!</b></div>

于 2014-11-02T20:03:36.317 回答