读书人

闭包有关问题?求大牛给个解释

发布时间: 2012-02-25 10:01:47 作者: rapoo

闭包问题?求大牛给个解释!

问题:
//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(){})(); 是立即执行。
[解决办法]
执行的顺序是这样的,这是规则吧。如果你页面没有加载完去取页面里的元素肯定是取不到的。

读书人网 >JavaScript

热点推荐