【问题标题】:Jquery each replace innerHtmljquery每次替换innerHtml
【发布时间】:2013-05-19 13:05:27
【问题描述】:

Jquery

我正在尝试更改多个 td 元素上的内部文本,尽管在调试时 this 似乎不是 jquery 对象(我可能是错的),但我认为它应该看起来像这样。

这应该怎么做?

$('.leg-number').each(function () {
        this.html('foo');
    });

【问题讨论】:

    标签: javascript jquery html this each


    【解决方案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 类。

      【讨论】:

        猜你喜欢
        • 2019-11-18
        • 2018-07-09
        • 2012-08-14
        • 1970-01-01
        • 2010-11-21
        • 2012-07-05
        • 2012-10-20
        • 1970-01-01
        • 2018-06-26
        相关资源
        最近更新 更多