未捕获的TypeError:对象#<htmldivelement>没有方法'height' - 无法在元素</htmldivelement>上调用jquery方法

时间:2013-10-02 09:55:11

标签: jquery

我需要在一些html元素中循环,使用相同的代码我得到错误

  

jquery未捕获TypeError:对象#没有方法'height'

这里有什么问题?

clamp: function() {
  var elms = $('#wrapper .content ul li .title');
  elms.each(function(i) {
    debugger
    var elm = this;
    var h = elm.height();
    var eO = elm.outerHeight();
    if (eO > h) {
      elm.text(function(index, text) {
        return text.replace(/\W*\s(\S)*$/, '...');
      });
    }
  })

2 个答案:

答案 0 :(得分:9)

each()方法中,this引用DOM元素,而不是jQuery对象(因此您无法在其上调用jQuery方法)。而不是

elm = this

尝试

elm = $(this)

答案 1 :(得分:2)

您需要将DOM元素(this)包装到jQuery对象中:

var elm = $(this);

请参阅the docs of the .each() function

  

更重要的是,回调是在当前DOM元素的上下文中触发的,因此关键字this指的是元素。