1
$('#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);

不起作用,我错过了什么?

4

5 回答 5

5

编辑-下面留下旧答案

在那个“准备好的”处理程序内部,this不是<img>元素。就是document对象。

我不知道确切的原因,但这就是为什么this不起作用。

等等,实际上我知道为什么:这是因为“就绪”事件仅适用于文档。“加载”事件会更相关,但您也不一定会得到“加载”事件。


CSS 属性不是元素属性:

$(this).css('width', '200px');

现在,<img>元素确实具有宽度属性。如果您在不太新的 Internet Explorer 中尝试此操作,则可能需要:

$(this).prop('width', 200);
于 2013-02-25T17:47:18.360 回答
4

尝试$(this).width(200);改用。

于 2013-02-25T17:47:42.187 回答
0
$('#test img:first').ready(function() {
    var t = $(this),
        w = t.width();
    t.css({width:200+"px");
});
于 2013-02-25T17:50:35.537 回答
0

这个怎么样(正确的 document.ready 函数):

$(function() {  
    $img = $('#test img:first');
    var w = $img.width();
    console.log(w);

    $img.attr('width', 200);
});
于 2013-02-25T17:59:53.060 回答
0

所有的答案都很好,但我认为最初的问题是在这部分......

$(this).attr('width', 200);

200 的值应该用单引号括起来。宽度是图像标签上的有效属性,但所有属性都是字符串,即使它们看起来是数字。

于 2013-02-25T18:02:42.920 回答