我只是在寻找一个简单的 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');
});
});
<强> FIDDLE HERE
请注意前两个表的值与第三个表的值的比较方式。现在我的问题是关于 matches
如何递增,我浏览了整个脚本,但不太明白 matches 如何分别为第一个和第二个表获取 4 和 2 的值(显示在相应的表为 40 和 20)。我了解 filter
函数的用法,但不太明白 matches 如何获取其值,我知道涉及 length
属性,我在末尾看到它return语句,但还是不太明白匹配是如何递增的?
最佳答案
$(function() {
$('ol').each(function() {
var matches = $('li', this).filter(function() { // Each item
这里它将迭代当前正在迭代的 ol
元素中包含的每个 li
项
var text = $(this).text();
return $('ul.three li').filter(function() { // Are there matches in .three?
return $(this).text() == text;
}).length > 0;
这里它将在三
类的ul
中搜索是否有任何li
与一个具有相同的文本>li
正在迭代。 filter
函数将返回与搜索匹配的每个元素,当然如果所有文本都不同,它将返回一个元素或不返回任何元素。因此,当它检查 length > 0
时,所做的就是检查是否至少有一个元素匹配(又名:如果此文本位于 . Three
中。所以这里如果它返回true,我们就会对前一个过滤器进行计数。
}).length;
这里,与之前相同,但使用外部过滤器,以检查找到了多少个。因此,对于第一个,值为 4。
$('li:last', this).text((matches * 10) + ' Points');
});
});
关于javascript - 了解比较值的简单排序脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482835/