Loï*_*oix 6 javascript jquery extjs
我正在使用看起来像这样的代码:
img.load(function(){
// do some stuff
$(this).width();
});
Run Code Online (Sandbox Code Playgroud)
在我的回调中,图像大小始终为0.它可能与它有关,但我的图像是本地加载的.
但事实上,如果我这样做.宽度,我会得到预期的宽度,然后我可以从这里做一些计算来改变我的extjs窗口.
经过一些尝试,我意识到如果我做$(这个)我改变的所有属性似乎都没有任何影响.
做$(this).width(40);
不会改变我的图像的宽度,但做的this.width = 40
将改变我的图像的宽度.这$(this)
就像在新元素中复制我的HTMLImageElement一样,只有当我再次添加到dom中以替换旧元素时才会应用这些更改.
我不太清楚要知道那里发生了什么.
编辑
这是我的img
变量包含的内容.
img = $('<img>');
img.attr('src', '....image');
Run Code Online (Sandbox Code Playgroud)
编辑2
这并没有真正改变jQuery不处理内存映像中的图像大小这一事实,但我觉得使用Extjs的任何人都不会重复我的错误.我的一个大问题是img
我使用的对象是一个有效的对象,但由于我使用的是ExtJs,我无意中犯了一个愚蠢的错误.我这样创造了我的窗户......
Ext.create('Ext.Window',
// some settings
items: [{
html: img.wrap('<div>').parent().html(),
// etc
Run Code Online (Sandbox Code Playgroud)
换句话说,我创建的事件是在img上,但我从未真正添加img
到DOM中.ExtJs向DOM添加了html文本,创建了一个无法通过事件修改的新对象,依此类推.
所以我必须创建一个id来找到新元素,所有这一切都必须在调用完成后modalWindow.show()
完成.之后一切都很完美.
要调整窗口大小,如果设置了尺寸,您可以将它们设置回null
并在窗口上执行doLayout调用,它将重新计算窗口大小.