jQuery.tablesorter.addParser 是函数用法
jQuery.tablesorter.addParser is function usage
没有关于如何使用 is: function(s, table, cell, $cell) {}
的明确信息,因为我打算使用但是我没有从纪录片中获得全面的知识。
我有一段代码如下所示。该功能的目的是用列数据填充数组,然后在 textsorter 中使用它对数组数据进行排序。但是,当我单击第二列时,使用 addparser 的列不再正确排序。所以它与 addParser 函数有关,所以我认为我可以通过使用 is 函数来修复它。
jQuery.tablesorter.addParser({
id: "parser",
is: function(s, table, cell, $cell) {
console.log("s",s,"table", table,"cell", cell, "$cell",$cell)
// s is the text from the cell
// table is the current table (as a DOM element; not jQuery object)
// cell is the current table cell (DOM element)
// $cell is the current table cell (jQuery object; added v2.18.0)
// return false if you don't want this parser to be auto detected
return true;
},
parsed: true,
format: function(aStr) {
console.log("aStr", aStr)
if (aStr.includes(".")) {
array_.push(aStr);
} else if (aStr.includes("-")) {
var result2 = aStr.replace(/-/g, ".");
console.log("before reverse array", result2)
result2 = result2.split(".");
result2 = result2.reverse();
result2 = result2.join(".");
console.log("reversed array", result2)
array_.push(result2);
} else {
array_.push(aStr);
}
return array_;
},
type: "text"
});
, headers : {
1: {
sorter: "parser"
},
}
, textSorter : {
1: function(aStr, bStr) {
<cfif isdefined("attributes.id") and attributes.id eq 0.1>
var value = "";
var previousValue = "";
console.log("array_",array_);
for (var i = 0; i < array_.length; i++) {
value = array_[i];
previousValue = array_[i-1];
// console.log("value",value, "previousValue", previousValue);
}
return value > previousValue ? 1 : value < previousValue ? -1 : 0;
</cfif>
},
}
Sample data:
var arr = [
"1",
"1",
"1.1.1",
"1.1.1.1",
"1.1.1.2",
"1.1.2",
"1.1.3",
"1.1.4",
"1.1.5",
"1.1.6",
"1.1.7",
"1.1.7.1",
"1.1.7.2",
"1.1.7.3",
"1.1.8",
"1.1.8.1",
"1.1.9",
"1.1.10",
"1.1.11",
"1.1.11.1",
"1.1.11.2",
"1.1.11.3",
"1.1.11.4",
"1.1.11.5",
"1.1.11.6",
"1.1.11.7",
"1.1.11.8",
"1.1.11.9",
"1.1.12",
"1.1.13",
"1.1.13.1",
"1.1.13.2",
"1.1.13.3",
"1.1.14",
"1.1.15",
"1.1.15.1",
"1.1.15.2",
"1.2",
"1.2.1",
"1.2.2",
"1.2.3",
"1.2.3.1",
"1.2.3.2",
"1.2.3.3",
"1.2.3.4",
"1.2.3.5",
"1.2.3.6",
"1.2.3.7",
"1.2.4",
"1.2.5",
"1.2.6",
"1.2.7",
"1.3.1",
"1.3.2",
"2",
"2.1",
"1.3"
]
is
函数和参数在本页描述:https://mottie.github.io/tablesorter/docs/example-parsers.html
本质上,它仅用于 auto-detect 如果解析器应该在特定列上使用。
- 如果要auto-detect,那么只有return
true
如果单元格字符串(s
),单元格 属性 或属性符合您的条件。
- 如果您已经知道 table 中有哪些数据,特别是您想要自定义解析器的哪些列,请将
is
函数设置为 always return false
;然后将header(thead
中的th
)class名称设置为sorter-{parser.id}
(参见https://mottie.github.io/tablesorter/docs/example-option-built-in-parsers.html)
在上面的示例代码中,我猜你正在对 ipv4 地址进行排序?查看 https://mottie.github.io/tablesorter/docs/example-parsers-ip-address.html - 解析器本身应该使用任何长度的小数点分隔值,例如1.2.3.4.5.6.7.99
更新:我忘记了如果部分数量不一致,"ipAddress" 解析器将无法按预期工作;例如如果列中的所有单元格都有 4 个部分“1.1.1.1”(数字以小数点分隔)
,它将起作用
这是一个修改后的版本,将按照您的预期进行排序 - demo
var maxSections = 4; // e.g. "1.1.1.1" = 4; "1.1.1.1.1" = 5
var maxCharsPerSection = 3; // e.g. "1.1.1.999" = 3; "1.1.1.9999" = 4
// Don't modify anything below
var filler = new Array(maxCharsPerSection).fill('0').join('');
$.tablesorter.addParser({
id: 'decimal-separated',
is: function() {
return false;
},
format: function(s) {
var i = 0,
a = s ? s.split('.') : [],
r = [];
for (i = 0; i < maxSections; i++) {
r.push((filler + (a[i] || '0')).slice(-maxCharsPerSection));
}
return s ? r.join('.') : s;
},
type: 'text'
});
$(".big_list").tablesorter({
sortList: [
[0, 0]
],
headers: {
0: {
sorter: 'decimal-separated'
}
}
});
没有关于如何使用 is: function(s, table, cell, $cell) {}
的明确信息,因为我打算使用但是我没有从纪录片中获得全面的知识。
我有一段代码如下所示。该功能的目的是用列数据填充数组,然后在 textsorter 中使用它对数组数据进行排序。但是,当我单击第二列时,使用 addparser 的列不再正确排序。所以它与 addParser 函数有关,所以我认为我可以通过使用 is 函数来修复它。
jQuery.tablesorter.addParser({
id: "parser",
is: function(s, table, cell, $cell) {
console.log("s",s,"table", table,"cell", cell, "$cell",$cell)
// s is the text from the cell
// table is the current table (as a DOM element; not jQuery object)
// cell is the current table cell (DOM element)
// $cell is the current table cell (jQuery object; added v2.18.0)
// return false if you don't want this parser to be auto detected
return true;
},
parsed: true,
format: function(aStr) {
console.log("aStr", aStr)
if (aStr.includes(".")) {
array_.push(aStr);
} else if (aStr.includes("-")) {
var result2 = aStr.replace(/-/g, ".");
console.log("before reverse array", result2)
result2 = result2.split(".");
result2 = result2.reverse();
result2 = result2.join(".");
console.log("reversed array", result2)
array_.push(result2);
} else {
array_.push(aStr);
}
return array_;
},
type: "text"
});
, headers : {
1: {
sorter: "parser"
},
}
, textSorter : {
1: function(aStr, bStr) {
<cfif isdefined("attributes.id") and attributes.id eq 0.1>
var value = "";
var previousValue = "";
console.log("array_",array_);
for (var i = 0; i < array_.length; i++) {
value = array_[i];
previousValue = array_[i-1];
// console.log("value",value, "previousValue", previousValue);
}
return value > previousValue ? 1 : value < previousValue ? -1 : 0;
</cfif>
},
}
Sample data:
var arr = [
"1",
"1",
"1.1.1",
"1.1.1.1",
"1.1.1.2",
"1.1.2",
"1.1.3",
"1.1.4",
"1.1.5",
"1.1.6",
"1.1.7",
"1.1.7.1",
"1.1.7.2",
"1.1.7.3",
"1.1.8",
"1.1.8.1",
"1.1.9",
"1.1.10",
"1.1.11",
"1.1.11.1",
"1.1.11.2",
"1.1.11.3",
"1.1.11.4",
"1.1.11.5",
"1.1.11.6",
"1.1.11.7",
"1.1.11.8",
"1.1.11.9",
"1.1.12",
"1.1.13",
"1.1.13.1",
"1.1.13.2",
"1.1.13.3",
"1.1.14",
"1.1.15",
"1.1.15.1",
"1.1.15.2",
"1.2",
"1.2.1",
"1.2.2",
"1.2.3",
"1.2.3.1",
"1.2.3.2",
"1.2.3.3",
"1.2.3.4",
"1.2.3.5",
"1.2.3.6",
"1.2.3.7",
"1.2.4",
"1.2.5",
"1.2.6",
"1.2.7",
"1.3.1",
"1.3.2",
"2",
"2.1",
"1.3"
]
is
函数和参数在本页描述:https://mottie.github.io/tablesorter/docs/example-parsers.html
本质上,它仅用于 auto-detect 如果解析器应该在特定列上使用。
- 如果要auto-detect,那么只有return
true
如果单元格字符串(s
),单元格 属性 或属性符合您的条件。 - 如果您已经知道 table 中有哪些数据,特别是您想要自定义解析器的哪些列,请将
is
函数设置为 always returnfalse
;然后将header(thead
中的th
)class名称设置为sorter-{parser.id}
(参见https://mottie.github.io/tablesorter/docs/example-option-built-in-parsers.html)
在上面的示例代码中,我猜你正在对 ipv4 地址进行排序?查看 https://mottie.github.io/tablesorter/docs/example-parsers-ip-address.html - 解析器本身应该使用任何长度的小数点分隔值,例如1.2.3.4.5.6.7.99
更新:我忘记了如果部分数量不一致,"ipAddress" 解析器将无法按预期工作;例如如果列中的所有单元格都有 4 个部分“1.1.1.1”(数字以小数点分隔)
,它将起作用这是一个修改后的版本,将按照您的预期进行排序 - demo
var maxSections = 4; // e.g. "1.1.1.1" = 4; "1.1.1.1.1" = 5
var maxCharsPerSection = 3; // e.g. "1.1.1.999" = 3; "1.1.1.9999" = 4
// Don't modify anything below
var filler = new Array(maxCharsPerSection).fill('0').join('');
$.tablesorter.addParser({
id: 'decimal-separated',
is: function() {
return false;
},
format: function(s) {
var i = 0,
a = s ? s.split('.') : [],
r = [];
for (i = 0; i < maxSections; i++) {
r.push((filler + (a[i] || '0')).slice(-maxCharsPerSection));
}
return s ? r.join('.') : s;
},
type: 'text'
});
$(".big_list").tablesorter({
sortList: [
[0, 0]
],
headers: {
0: {
sorter: 'decimal-separated'
}
}
});