Jquery每个都替换innerHtml

时间:2013-05-24 01:15:46

标签: javascript jquery html this each

Jquery

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

这应该做的正确方法是什么?

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

3 个答案:

答案 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