我正在学习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'));
答案 0 :(得分:4)
他们有完全不同的含义。
在此:
$('li').each(function() {
$(this).text($(this).attr('name'));
});
li
。 $('li').text($(this).attr('name'));
li
s window
的属性name
。在上一个示例中,您将所有li
的相同文本应用于窗口中的名称。
编辑:澄清:在最后一个示例中,$(this)
指的是您正在执行的函数所属的任何位置。它可以是window
,也可以是对象。
答案 1 :(得分:0)
因为在最后一个例子中,迭代在函数内部。 this
没有引用每一个项目,但恰好是当前的上下文。
这就是你必须遍历每个项目的原因。