2013-08-08 2 views
0

У меня есть с id #list и при нажатии кнопки. Я хочу увеличить размер всех элементов списка на 50px.Ошибка jQuery: у объекта нет метода 'height', this.height()

Почему следующий код не работает:

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 

ответ

12

this является DOM элемент , Вам нужен объект jQuery.

Попробуйте $(this).height():

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

Вы можете просто сделать это. Нет необходимости в цикле:

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

Документах для .height() можно найти здесь: http://api.jquery.com/height/#height-functionindex--height

1
function Test() { 
    $("#list li").css('height', '+=50'); 
} 

это самый короткий ответ, который я могу думать, что может быть продлен на следующий, чтобы сделать функцию для повторного использования для различных элементов и высоты

function Test(el, height) { 
    $(el).css('height', '+=' + height); 
} 
// usage 
Test("#list li", 50); 
Смежные вопросы