jquery $(this)在同一个函数中运行一次

时间:2013-02-25 17:44:37

标签: javascript jquery

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

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

5 个答案:

答案 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的值应该用单引号括起来。宽度是图像标记上的有效属性,但所有属性都是字符串,即使它们看起来是数字。