问题:
//methods.init(); //这样调用init方法,两个alert都会弹出,但中间的代码不起作用,求解释!
$(function() { methods.init(); });//这样调用中间代码就起作用了。
HTML代码:
- HTML code
<select id="DDL_Country"></select>
JS代码:
- JScript code
(function() { var a = $("#DDL_Country"), b = $("#DDL_Province"), c = $("#DDL_City"), data = { 1: { n: "中国" }, 2: { n: "美国"} }; var methods = { init: function() { alert('这里测试弹出'); var aaa = ''; $.each(data, function(i, item) { aaa += "<option>" + item.n + "</option>"; }); $("#DDL_Country").html(aaa); alert('这里都弹出了,中间的还没执行?'); } }; //methods.init(); //这样调用init方法,两个alert都会弹出,但中间的代码不起作用,求解释! $(function() { methods.init(); });//这样调用中间代码就起作用了。 })();
------解决方案--------------------
(function(){})() 是立即执行。不知道执行的时候你的页面layout完成木有啊
你可以将这段代码放在页面底部试试。
------解决方案--------------------
$(function() { methods.init(); });//是DOM加载完成执行
(function(){})(); 是立即执行。
------解决方案--------------------
执行的顺序是这样的,这是规则吧。如果你页面没有加载完去取页面里的元素肯定是取不到的。