【发布时间】:2013-05-19 13:05:27
【问题描述】:
Jquery
我正在尝试更改多个 td 元素上的内部文本,尽管在调试时 this 似乎不是 jquery 对象(我可能是错的),但我认为它应该看起来像这样。
这应该怎么做?
$('.leg-number').each(function () {
this.html('foo');
});
【问题讨论】:
标签: javascript jquery html this each
Jquery
我正在尝试更改多个 td 元素上的内部文本,尽管在调试时 this 似乎不是 jquery 对象(我可能是错的),但我认为它应该看起来像这样。
这应该怎么做?
$('.leg-number').each(function () {
this.html('foo');
});
【问题讨论】:
标签: javascript jquery html this each
不妨试试这个:
$('.leg-number').html('foo');
这是实现目标的一种更短、更有效的方法。它只是要求 jQuery 将具有类“leg-number”的 every 元素的内部 html 设置为“foo”,而无需任何显式迭代。大多数 jQuery 方法(如 .html())都可以处理元素集,因此对于像这样的简单情况,您实际上不需要使用 .each()。
现在说说为什么你的版本不工作:如果你用 jQuery 函数 $() 包裹 this 就可以使用 .each(),这样你就可以在上面使用 jQuery 方法了:
$('.leg-number').each(function () {
$(this).html('foo');
});
.each() 回调中的变量this 是一个DOM 元素,您需要$(this) 将其转换为包装该元素的jQuery 对象。请参阅 epascarello 在我更新答案之前解释的答案中的解释。
【讨论】:
.each()。我建议您解释为什么 OP 的代码不起作用。正确的代码+解释总是比代码更好。
阅读each() 的文档。 this 是一个 DOM Html 元素节点,而不是一个 jQuery 对象引用。您可以将其转换回 jQuery 或直接使用 innerHTML。
$(this).html('foo');
或
this.innerHTML = 'foo';
文档显示在示例中使用 $(this)。
【讨论】:
变化:
this.html('foo');
到:
$(this).html('foo');
您正在尝试对非 jQuery 对象使用 jQuery 方法。这当然假设您的表格单元格具有 .leg-number 类。
【讨论】: