需要忽略JavaScript表排序函数中的文本引号
Need to ignore textual quotes in a JavaScript table sorting function
下面是我的代码:
function makeSortFunction(type, direction, index) {
var a = "a[" + index + "]",
b = "b[" + index + "]";
if (type == 'text' && direction == 'asc') {
return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + a + " < " + b + ") ? -1 : 1 )));";
} else if (type == 'text' && direction == 'desc') {
return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + b + " < " + a + ") ? -1 : 1 )));";
} else if (type == 'numeric' && direction == 'asc') {
return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + a + " - " + b + "));";
} else if (type == 'numeric' && direction == 'desc') {
return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + b + " - " + a + "));";
}
};
function makeSortText(i) {
return "((a[" + i + "] < b[" + i + "]) ? -1 : ((a[" + i + "] > b[" + i + "]) ? 1 : 0));";
};
function makeSortTextDesc(i) {
return "((b[" + i + "] < a[" + i + "]) ? -1 : ((b[" + i + "] > a[" + i + "]) ? 1 : 0));";
};
function makeSortNumeric(i) {
return "a[" + i + "]-b[" + i + "];";
};
function makeSortNumericDesc(i) {
return "b[" + i + "]-a[" + i + "];";
};
function sortText(a, b) {
if (table.config.sortLocaleCompare) return a.localeCompare(b);
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function sortTextDesc(a, b) {
if (table.config.sortLocaleCompare) return b.localeCompare(a);
return ((b < a) ? -1 : ((b > a) ? 1 : 0));
};
function sortNumeric(a, b) {
return a - b;
};
function sortNumericDesc(a, b) {
return b - a;
};
function getCachedSortType(parsers, i) {
return parsers[i].type;
}; /* public methods */
这对我来说非常好,除了任何带有引号的东西(我所有的文章标题都使用单引号),或者在一个实例中一个美元符号,结束在升序排序的顶部。我真的希望有一种方法能把这些东西和列表的其他部分按字母数字顺序排列。
有人能帮忙吗?
默认情况下,tableSorter
jQuery插件使用每个单元格的整个文本内容进行排序。你可以通过config.textExtraction
过滤器来覆盖这一点,这将在你调用tableSorter
插件的代码行中完成。
您没有包含代码的那一部分,所以一般来说,它看起来像这样,包括对自定义文本提取函数的必要调用:
$("#myTable").tableSorter( {textExtraction: myTextExtraction} );
然后编写一个文本提取函数,该函数将删除空格和引号的前后字符。
function myTextExtraction(s) {
return s.replace(/^['s'"]+|['s'"]+$/g, '');
}
我没有看到任何"smart"(花括号)引号在你的网站上使用,但如果你这样做,那么你需要在字符类中为每种类型的引号添加适当的Unicode代码点。
看了你的网站后…
您只需要将上面的自定义函数myTextExtraction
添加到代码中,然后添加额外的textExtraction
参数。在检查了站点现有的JavaScript代码之后,像这样的东西可能对您有用:
function myTextExtraction(s) {
return s.replace(/^['s'"]+|['s'"]+$/g, '');
}
$(function() {
$("table").tablesorter({
textExtraction: myTextExtraction, widthFixed: true, widgets: ['zebra']
}).tablesorterPager({
textExtraction: myTextExtraction, container: $("#pager");
});
});
该代码将在您的网站上的当前代码的位置,即:$(function() { $("table") .tablesorter({widthFixed: true, widgets: ['zebra']}) .tablesorterPager({container: $("#pager")}); });
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何将具有文本类型值的var放入jQuery函数中
- 文本编辑后,append函数不适用于文本区域
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- Javascript-onblur函数无法更改文本框的值
- JavaScript:在调用函数的文本输入上按enter键
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- HTML如何根据javascript函数的返回值限制文本输入
- JavaScript-onClick将按钮ID或单击按钮的文本传递给函数
- 设置javascript函数中文本框的值
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 它在另一个函数中嵌套后不会输出文本
- j查询限制文本函数
- JS中的文本函数第一个参数(_)
- 合并 2 个 javascript/jquery 随机横幅图像/文本函数彼此对应
- Get-day文本函数返回了未定义的值
- br 标签在使用 JQUERY 文本函数将内容从文本区域替换到 DIV 时不起作用
- 如何将验证文本函数与其他函数同时使用