jquery每次替换innerHtml
Posted
技术标签:
【中文标题】jquery每次替换innerHtml【英文标题】:Jquery each replace innerHtml 【发布时间】:2013-05-19 13:05:27 【问题描述】:Jquery
我正在尝试更改多个 td
元素上的内部文本,尽管在调试时 this
似乎不是 jquery 对象(我可能是错的),但我认为它应该看起来像这样。
这应该怎么做?
$('.leg-number').each(function ()
this.html('foo');
);
【问题讨论】:
【参考方案1】:不妨试试这个:
$('.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 在我更新答案之前解释的答案中的解释。
【讨论】:
好吧,够了。除了酸葡萄,还有什么投反对票的? @j08691,我不知道为什么我的回答被否决了。也许有人会评论它。 +1 因为您的第一个选项更有效,因为根本不需要.each()
。我建议您解释为什么 OP 的代码不起作用。正确的代码+解释总是比代码更好。
@j08691 “好吧,看看你的代表,我可以看出你对我投了反对票。为什么?”你怎么知道?他的答案被否决了-2,投反对票将是-1。
@jfriend00,感谢您的建议。我会用一些更好的解释来更新我的答案。【参考方案2】:
阅读each()
的文档。 this
是一个 DOM Html 元素节点,而不是一个 jQuery 对象引用。您可以将其转换回 jQuery 或直接使用 innerHTML
。
$(this).html('foo');
或
this.innerHTML = 'foo';
文档显示在示例中使用 $(this)
。
【讨论】:
【参考方案3】:变化:
this.html('foo');
到:
$(this).html('foo');
您正在尝试对非 jQuery 对象使用 jQuery 方法。这当然假设您的表格单元格具有 .leg-number
类。
【讨论】:
以上是关于jquery每次替换innerHtml的主要内容,如果未能解决你的问题,请参考以下文章