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うまくいかない理由です。

実際に待ってください。理由はわかります。これは、「準備完了」イベントがドキュメントにのみ適用されるためです。「load」イベントの方が関連性が高くなりますが、必ずしも「load」イベントが発生するわけではありません。


CSSプロパティは要素プロパティではありません。

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

現在、<img>要素にwidthプロパティがあります。それほど新しいものではないInternetExplorerでこれを試している場合は、次のものが必要になる場合があります。

$(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 に答える