我只是在搜索一个简单的jquery排序脚本,并在网上找到了这个:
$(function() {
$('ol').each(function() {
var matches = $('li', this).filter(function() { // Each item
var text = $(this).text();
return $('ul.three li').filter(function() { // Are there matches in .three?
return $(this).text() == text;
}).length > 0;
}).length;
$('li:last', this).text((matches * 10) + ' Points');
});
});
注意如何将前两个表的值与第三个表的值进行比较。现在我的问题是matches
如何递增,我浏览了整个脚本,但是不太清楚第一个和第二个表的匹配值是多少分别为4和2(分别显示在各个表中)表格为40和20)。我理解filter
函数的用法,但是我不太清楚匹配是如何得到它的值的,我知道length
属性是涉及的,我在return语句的末尾看到它,但仍然不太明白比赛是如何增加的?
答案 0 :(得分:2)
$(function() {
$('ol').each(function() {
var matches = $('li', this).filter(function() { // Each item
这里将遍历当前正在迭代的li
元素中包含的每个ol
项目
var text = $(this).text();
return $('ul.three li').filter(function() { // Are there matches in .three?
return $(this).text() == text;
}).length > 0;
如果有任何ul
与正在迭代的three
文本相同,则会在li
中使用类li
进行搜索。 filter
函数将返回与搜索匹配的每个元素,当然,如果所有文本都不同,它将返回一个元素或不返回任何元素。因此,当它检查它时length > 0
正在做的是检查是否至少有一个匹配的元素(也就是说:如果这个文本在.three
中。所以如果它返回true,那么我们将上一个过滤器的计数器。
}).length;
这里,和以前一样,但是使用外部过滤器,来检查找到了多少。因此,对于第一个,值为4.
$('li:last', this).text((matches * 10) + ' Points');
});
});