2011-11-30 38 views
1

我一直在玩弄揭示模塊模式。我最初開始使用Singleton模式,但是通過閱讀模塊模式似乎是更好的選擇。jQuery不能正常顯示模塊模式

所以,我測試了以下:

var test = (function() { 

var init = function() { 
    alert('hello'); 
}; 

return { 
    init: init 
}; 
})(); 

這調用

<script>test.init();</script> 

不過,我想使用jQuery所以我嘗試當工作正常:

var test = (function($) { 

var init = function() { 
    $("#samplediv").html('test'); 
    alert('hello'); 
}; 

return { 
    init: init 
}; 
})(jQuery); 

但這不起作用。它在使用時可以工作:

<script>$(function() { test.init(); });</script> 

如何在調用它的時候無需添加jQuery即可使其工作?

+0

[It works](http://jsfiddle.net/QeBme/),所以你有其他一些問題,我認爲。 – Ryan

+0

使用''? –

+0

是的。它確實... – Ryan

回答

4

通常,任何接觸DOM的東西都需要在$(document).ready(fn)回調中完成。 $(fn)是一個快捷方式。

所以它不起作用的原因是因爲您正在搜索尚不存在的DOM元素。所以你有2個選擇。要麼你必須使用$()包裝器,要麼只有在存在DOM元素後才能找到另一種方法來運行代碼。另一種方法是將腳本標記移動到body標記的底部,以便DOM元素在運行時可以存在。

<body> 
    <!-- your page elements here --> 
    <script>test.init();</script> 
</body>