0

私は id を持っていて、#listいくつかのボタンをクリックすると、すべてのリスト要素のサイズを50px.

次のコードが機能しないのはなぜですか。

function Test(){
   $("#list li").each(function(){
       var h = this.height() + 50;
       this.height(h);
   });
}

この機能はボタンをクリックするとアクティブになり、クリックすると次のエラーが発生します。

Uncaught TypeError: Object #<HTMLLIElement> has no method 'height' index.html:32
(anonymous function) index.html:32
b.extend.each jquery-1.9.1.min.js:152
b.fn.b.each jquery-1.9.1.min.js:45
Test index.html:31
onclick index.html:44
4

3 に答える 3

12

thisDOM要素です。jQuery オブジェクトが必要です。

試してください$(this).height()

function Test(){
    $("#list li").each(function(){
        var h = $(this).height() + 50;
        $(this).height(h);
    });
}
于 2013-08-08T12:53:42.510 に答える
2

あなたはこれを行うことができます。ループする必要はありません:

function Test() {
    $("#list li").height(function (index, OldHeight) {
        return OldHeight + 50;
    });
}

ドキュメントは.height()ここにあります: http://api.jquery.com/height/#height-functionindex--height

于 2013-08-08T12:55:46.117 に答える
1
function Test() {
    $("#list li").css('height', '+=50');
}

私が考えることができる最短の答えです。これを次のように拡張して、さまざまな要素や高さで関数を再利用できるようにすることができます

function Test(el, height) {
    $(el).css('height', '+=' + height);
}
// usage
Test("#list li", 50);
于 2013-08-08T12:57:32.487 に答える