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的主要内容,如果未能解决你的问题,请参考以下文章

jQuery学习—替换方法

jQuery-替换和删除元素

用星号javascript/jquery替换数字?

jQuery:延迟替换 div 的 innerHTML?

使用 jQuery 替换 XMLHttpRequest

jQuery/JavaScript 替换损坏的图像