jQuery:用列表项替换列表项文本值

时间:2009-12-04 12:18:27

标签: jquery

我正在学习jQuery,但我仍然没有完全理解它是如何工作的。假设我有一个这样的无序列表:

<ul>
<li name="one">xxx</li>
<li name="two">xxx</li>
<li name="three">xxx</li>
</ul>

我希望用它的名字替换每一行的文本值。 你能解释一下为什么会这样吗:

$('li').each(function() {
    $(this).text($(this).attr('name'));
});

虽然这个没有?

$('li').text($(this).attr('name'));

2 个答案:

答案 0 :(得分:4)

他们有完全不同的含义。

在此:

$('li').each(function() {
    $(this).text($(this).attr('name'));
});
  • 选择所有li
  • 找到的每个元素:
  • 将我的(li)文字改为:
    • 选择我的(li)属性。

$('li').text($(this).attr('name'));

  • 选择所有li s
  • 将文字更改为:
    • 选择我的window的属性name

在上一个示例中,您将所有li的相同文本应用于窗口中的名称。

编辑:澄清:在最后一个示例中,$(this)指的是您正在执行的函数所属的任何位置。它可以是window,也可以是对象。

答案 1 :(得分:0)

因为在最后一个例子中,迭代在函数内部。 this没有引用每一个项目,但恰好是当前的上下文。

这就是你必须遍历每个项目的原因。