2014-11-02 41 views
-2

我將構建一個應用程序,因爲它不是太豐富,否則我可以使用angularjs來實現此目的。我想將我的JS代碼組織成適當的模塊化編程方法。通過使用jQuery構造應用程序

E.g

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 

}); 

請現在就來看看它我已經更新了我的問題與實際代碼

+0

jQuery對象(無論是'jQuery'或'$')是全球性的,所以你真的沒有把它的任何地方。你寫的東西可能會工作得很好。我真的不明白你的問題。 – 2014-11-02 09:48:14

+0

訪問jquery insie模塊,這樣我需要將jquery對象傳遞給init方法 var module = {('#id')elem:$('#id'),//無法在這裏訪問jquery對象 init:function(jquery ){// yes goes here } } 我希望我能解釋我的問題嗎? – MSK 2014-11-02 14:31:43

+0

請編輯您的原始問題,並添加一些代碼,告訴我們錯誤在哪裏。 – 2014-11-02 15:22:49

回答

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>

+0

非常感謝你解決了我的問題,我也使用underscorejs,但感謝您的幫助:) – MSK 2014-11-02 21:28:04

+0

我認爲它是下劃線,但爲什麼混合它,如果jQuery有它;) – 2014-11-02 21:38:07

+0

下劃線_.each是更多的權力我認爲它具有良好的瀏覽器兼容性 – MSK 2014-11-03 00:15:12