我需要在一些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)*$/, '...');
});
}
})
答案 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指的是元素。