我正在尝试在单击列标题时对表行Asc和Desc进行排序。它在firefox和Chrome中工作正常,但在IE中无法正常工作。我尝试了不同的东西,比如获取最新版本的jquery,我仍然遇到同样的问题。 有些列按字母顺序排序,有些列按数值排序,有些列将基于空值排序,最后在checkstate上排序。我正在根据类进行排序。
我无法使用插件。这就是我所拥有的。除了在IE中,为什么它适用于所有浏览器?我看了看,我找不到这样的例子,有人按照同样的方式排序。 任何信息都会有帮助。谢谢!
这是jquery -
<script type="text/javascript">
$(document).ready(function () {
$('.s').click(function () { //this is my header click
var NotOptional;
var checkState;
if ($(this).hasClass('o')) { //optional column
NotOptional = false;
} else {
NotOptional = true;
}
if ($(this).hasClass('cs')) { //class on my input items
checkState = true;
} else {
checkState = false;
}
var o = $(this).hasClass('asc') ? 'desc' : 'asc';
$('.s').removeClass('asc').removeClass('desc');
$(this).addClass(o);
var colIndex = $(this).prevAll().length; //getting the rows
var tbod = $(this).closest("table").find("tbody")
var rows = tbod.find("tr").not('.first');
rows.sort(function (a, b) {
if (checkState == true) { //if its a check box or radio
var A = $(a).find("td input").eq(colIndex); //getting checkstate
var B = $(b).find("td input").eq(colIndex);
if (A.is(':checked') == true) {
A = 1; //setting row value to compare
} else {
A = 0;
}
if (B.is(':checked') == true) {
B = 1;
} else {
B = 0;
}
if (A < B) { //returning compare for input
return A < B;
} else if (A == B) {
return A == B;
} else if (A > B) {
return A > B;
}
} else {
if (NotOptional == false) { //not optional never blank
var A = $(a).find("td").eq(colIndex).text().toUpperCase();
var B = $(b).find("td").eq(colIndex).text().toUpperCase();
} else {
//these don't have to have a value but might contain numeric, letter or a null value
var A = $(a).find("td").eq(colIndex).text().toUpperCase();
var B = $(b).find("td").eq(colIndex).text().toUpperCase();
if (!isNaN(A)) A = Number(A);
if (!isNaN(B)) B = Number(B);
}
}
return o == 'asc' ? A > B : A < B;
});
$.each(rows, function (index, ele) {
tbod.append(ele); //appending the rows
});
}); //end sortable click
我坚持这个并且无法弄清楚为什么IE不理解行排序。如果它有帮助,这个jquery是在aspx页面上的用户控件上。我已经在IE中使用开发工具检查了标记,并且类在那里,它通过Jquery点击运行,但是当它比较行时它会变得混乱,只是随机附加它们(即 - 不排序任何东西)
答案 0 :(得分:0)
确定。我崩溃了,决定使用Tablesorter。谢谢各位的帮助。我建议任何想要对表进行排序并需要跨浏览器支持的人,使用tablesorter并编写自己的Parser。
http://mottie.github.io/tablesorter/docs/example-parsers-advanced.html