我访问网站http://api.jquery.com/end/只是为了了解end()的使用方式及其工作原理。不幸的是,我只是不明白它做了什么。所以我需要知道在什么样的情况下应该使用end()。
<ul class="first">
<li class="foo">list item 1</li>
<li>list item 2</li>
<li class="bar">list item 3</li>
</ul>
<ul class="second">
<li class="foo">list item 1</li>
<li>list item 2</li>
<li class="bar">list item 3</li>
</ul>
$('ul.first')
.find('.foo')
.css('background-color', 'red')
.end()
.find('.bar')
.css('background-color', 'green');
我只是不明白end()
函数在这里扮演什么样的角色。
如果有人帮助我了解end()
功能的使用情况,那就太棒了。简单的示例代码。请帮忙。感谢
答案 0 :(得分:2)
the documentation中很好地解释了这一点:
结束当前链中最近的过滤操作,并将匹配元素集返回到先前的状态。
如果我像这样渲染代码,那就更清楚了:
$('ul.first')
.find('.foo')
.css('background-color', 'red')
.end()
.find('.bar')
.css('background-color', 'green');
这意味着您将background-color
设置为green
的内容为ul.first .bar
,而不是ul.first .foo .bar
。它撤消该调用链中的.find('foo')
过滤器。
等效的是:
$('ul.first').find('.foo').css('background-color', 'red');
$('ul.first').find('.bar').css('background-color', 'green');
答案 1 :(得分:2)
初始选择器返回类ul
的所有first
元素。 .find('.foo')
返回类foo
的所有元素的子项,然后为它们设置红色的背景颜色。 .end()
的使用会返回.find()
之前的前一组元素 - 因此,同样具有类ul
的所有first
元素 - 然后查找具有该类的子元素bar
。
答案 2 :(得分:0)
描述:结束当前的最新过滤操作 链并将匹配元素集返回到先前的状态。
我解释$('ul.first').find('.foo').css('background-color', 'red')
.end().find('.bar').css('background-color', 'green');
。您选择所有ul.first
元素,然后从中选择所有.foo
元素(并更改BG颜色)。接下来,您结束序列,以便“撤消”对.foo
元素的搜索。
现在,您搜索所有.bar
元素,并更改其BG颜色。
end()
的功能是停止搜索序列,并进行一级搜索。在示例中,如果没有end()
,则不会有.bar
个元素,因为HTML中没有ul.first .foo .bar
元素。