Skip to content

Instantly share code, notes, and snippets.

@tangyangzhe
Created December 13, 2012 14:01
Show Gist options
  • Save tangyangzhe/4276560 to your computer and use it in GitHub Desktop.
Save tangyangzhe/4276560 to your computer and use it in GitHub Desktop.
javascript模块模式实现
// http://dancewithnet.com/2007/12/04/a-javascript-module-pattern/
<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/utilities/utilities.js"></script>
<ul id="myList">
<li class="draggable">一项</li>
<li>二项</li>
<li class="draggable">三项</li>
</ul>
<script>
YAHOO.namespace("myProject");
YAHOO.myProject.myModule = function () {
var yue = YAHOO.util.Event,
yud = YAHOO.util.Dom;
//私有方法
var getListItems = function () {
var elList = yud.get("myList");
var aListItems = yud.getElementsByClassName("li", elList);
return aListItems;
};
//这个放回的对象将变成YAHOO.myProject.myModule:
return {
aDragObjects: [], //可对外访问的,存储DD对象
init: function () {
//直到DOM完全加载好,才实现列表项可拖拽:
yue.onDOMReady(this.makeLIsDraggable, this, true);
},
makeLIsDraggable: function () {
var aListItems = getListItems(); //我们可以拖拽的那些元素
for (var i = 0, j = aListItems.length; i < j; i++) {
this.aDragObjects.push(new YAHOO.util.DD(aListItems[i]));
}
}
};
}();
//上面的代码已经执行,所以我们能立即访问init方法:
YAHOO.myProject.myModule.init();
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment