现在我想要在页面加载时检查元素大小。我一直在使用JSONArray messages = (JSONArray) jObject.get("routes");
for(int n = 0; n < messages.length(); n++)
{
JSONObject object = messages.getJSONObject(n);
JSONArray legs = (JSONArray) object .get("legs");
// do your stuff....
}
这样做,但发现通常属性为null。如果我使用$(document).ready();
,也是如此。
为了解决这个问题,我一直在使用一些黑客,如果没有设置元素,我会递归调用函数。
问题:在专业性方面是否有更好的方法?
$(window).load();
答案 0 :(得分:3)
你根本不需要黑客攻击。这里的问题是在Main.run
被触发之前调用document.ready()
函数。你应该:
$(document).ready(Main.run);
而不是
$(document).ready(Main.run());
当您将()
添加到函数名称时,interpeter会在到达该行时立即调用它。
传递回调时,您应该只传递对该函数的引用。
答案 1 :(得分:1)
就专业主义而言,我认为最好将代码放在这样的命名空间中:
var app = window.app || {};
app.set = {};
app.set.makeMusic = (function(){
// private members
this.height = "";
this.width = "";
var init = function() {
height = $('#bloc-1').height();
width = $('#bloc-1').width();
alert(height + " " + width);
};
//public interface
return {
init: init
};
})(); // self invoked
$(function(){
app.set.makeMusic.init();
});