所以我有这个元素,我需要得到width()
和height()
,但它一直返回0,但是当我在控制台中输入$('#lightingData').width()
时,它给了我正确的值。我想我需要使用一些其他包装功能,我试过$(document).ready(function() {...});
和$(window).load(function(){...});
jQuery等待更长的时间,直到函数被调用
是否还有其他的包装功能,它会等待更长的时间才能执行?
所以我有这个元素,我需要得到width()
和height()
,但它一直返回0,但是当我在控制台中输入$('#lightingData').width()
时,它给了我正确的值。我想我需要使用一些其他包装功能,我试过$(document).ready(function() {...});
和$(window).load(function(){...});
jQuery等待更长的时间,直到函数被调用
是否还有其他的包装功能,它会等待更长的时间才能执行?
的事情之一,前您可以尝试在尝试呼叫.width()
和.height()
之前明确等待该特定元素加载。
试试这个:
$('#lightingData').load(function() {
...height and width manipulation here...
...don't forget about scope...
});
你应该把你这里面$(document).ready(...)
,你会希望文档至少知道什么是$('#lightingData')
。因为你得到0
为height
和width
而不是错误,我可以假设它们至少在调用方法之前找到。
UPDATE
每通过@Ian添加的评论,我想指出的是,这只能对某些类型的元素(URL,内部框架,图片/媒体等的工作 - 基本上什么需要加载其内容)。我不打算更新代码,因为如果您将它用于其中一种元素,我上面的内容是正确的,如果您将它用于另一种元素,将会很愚蠢。如果你正在使用它,你只需要添加一个条件/过滤器(根据你的实现),以确定这个代码是否应该绑定到该特定元素。
如果你是100%肯定的宽度仍然是0在$(文件)点。就绪()
试试这个:
$(function() {
$('#lightingData').show(function(e) {
var width = $(this).width();
//do something
});
});
或者,一些愚蠢的事,但会为工作90%的情况下:
$(function() {
setInterval(function() {
var width = $('#lightingData').width();
//do something
}, 1000);
});
这一个将后$(文件)。就绪延迟动作1秒()。
没有确切的情况很难给出指定的解决方案。
对于静态元素,窗口加载应该足够绰绰有余。你用javascript添加元素吗? – 2013-04-11 17:49:03
你可以发布一个完整的例子和jsFiddle吗? – j08691 2013-04-11 17:49:14
向我们显示您的代码 – 2013-04-11 17:49:44