$('#test img:first').ready(function() {
var w = $(this).width();
console.log(w);
$('#test img:first').attr('width', 200);
//$(this).attr('width', 200);
});
元素的宽度是正确的 所以通过选择器设置宽度 但是
$(this).attr('width', 200);
不起作用,我错过了什么?
答案 0 :(得分:5)
编辑 - 下面留下的旧答案
在“就绪”处理程序中,this
不是<img>
元素。它是document
对象。
我不确切知道为什么,但这就是this
无效的原因。
实际上我确实知道原因:这是因为“ready”事件仅适用于文档。 “加载”事件会更相关,但您也不一定会收到“加载”事件。
<小时/> CSS属性不是元素属性:
$(this).css('width', '200px');
现在,<img>
元素 do 具有width属性。如果您在不太新的Internet Explorer中尝试此操作,则可能需要:
$(this).prop('width', 200);
答案 1 :(得分:4)
请尝试使用$(this).width(200);
。
答案 2 :(得分:0)
$('#test img:first').ready(function() {
var t = $(this),
w = t.width();
t.css({width:200+"px");
});
答案 3 :(得分:0)
这个(适当的document.ready功能):
$(function() {
$img = $('#test img:first');
var w = $img.width();
console.log(w);
$img.attr('width', 200);
});
答案 4 :(得分:0)
所有答案都很好,但我认为最初的问题是在这一部分......
$(this).attr('width', 200);
200的值应该用单引号括起来。宽度是图像标记上的有效属性,但所有属性都是字符串,即使它们看起来是数字。