Jquery
我正在尝试更改多个td
元素上的内部文本,我认为它应该看起来像这样,尽管this
在调试时似乎不是一个jquery对象(我可能是错的)。< / p>
这应该做的正确方法是什么?
$('.leg-number').each(function () {
this.html('foo');
});
答案 0 :(得分:8)
也许试试这个:
$('.leg-number').html('foo');
这是实现目标的更短,更有效的方式。它只是要求jQuery将每个元素的内部html设置为类“leg-number”到“foo”而不进行任何显式迭代。大多数jQuery方法(如.html()
)可以处理元素集,因此对于像这样的简单情况,您实际上不需要使用.each()
。
现在说明你的版本无法正常工作:如果你用{jQuery函数.each()
封装this
,那么使用$()
就可以了,所以你可以使用jQuery方法:
$('.leg-number').each(function () {
$(this).html('foo');
});
this
回调中的变量.each()
是一个DOM元素,您需要$(this)
将其转换为包装此元素的jQuery对象。在我更新答案之前,请参阅epascarello在答案中的解释。
答案 1 :(得分:5)
阅读each()
的文档。 this
是DOM Html Element节点,而不是jQuery对象引用。您可以将其转换回jQuery或直接使用innerHTML
。
$(this).html('foo');
或
this.innerHTML = 'foo';
文档在示例中使用$(this)
显示。
答案 2 :(得分:1)
变化:
this.html('foo');
为:
$(this).html('foo');
您正在尝试在非jQuery对象上使用jQuery方法。这当然假设您的表格单元格具有类.leg-number
。