jQuery filter()
和each()
方法之间有什么区别。
因为两者都用于在集合上应用循环。
我听说过可以按集合类型过滤的filter()
方法。
答案 0 :(得分:2)
.each()
=>它将简单地遍历所有记录
离。
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
<li>list item 6</li>
</ul>
$(li).each(function() { // it will return all li and set its css
$(this).css( "background-color", "red" );
});
filter()
=&gt;它只会返回满足某些条件的记录
离。
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
<li>list item 6</li>
</ul>
$( "li" ).filter( ":even" ).css( "background-color", "red" ); // it will only set css to even li
答案 1 :(得分:2)
$.filter
返回符合给定条件的项集合,而$.each
遍历项集合。
答案 2 :(得分:2)
我倾向于认为.each()
是一种简化jQuery方式来声明for
循环。
例如:
var i = 0;
$("#list1 li").each(function() {
console.log("Looped through list item number: " + i++);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<ul id="list1">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
&#13;
也可以在Vanilla JS中写成:
var list = document.getElementById("list2");
var items = list.getElementsByTagName("li");
for(var i = 0; i < items.length; i++) {
console.log("Looped through item number: " + i);
}
&#13;
<ul id="list2">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
&#13;
使用filter()
可以按照名称建议 - 按照以下方式过滤掉一组匹配的对象:
$("li").filter(":first-child").addClass("test");
&#13;
.test {
background-color: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<ul>
<li>Number 1</li>
<li>Number 1</li>
<li>Number 1</li>
<li>Number 1</li>
</ul>
&#13;