Javascript 尝试按字母顺序排列jqueryui;除IE外,所有产品均可使用
我正在尝试做一个客户端的jQueryUIAccordion,按照标题文本的字母顺序放置accordion部分 jQueryUI结构包括一个h3作为类别标题,以及一个div作为该类别的内容。因此,我需要对h3文本进行排序,但在DOM中串联移动每个h3及其后续div 我有以下功能,可以在FF和Chrome中使用,但不能在任何风格的IE中使用:Javascript 尝试按字母顺序排列jqueryui;除IE外,所有产品均可使用,javascript,jquery,jquery-ui,internet-explorer,Javascript,Jquery,Jquery Ui,Internet Explorer,我正在尝试做一个客户端的jQueryUIAccordion,按照标题文本的字母顺序放置accordion部分 jQueryUI结构包括一个h3作为类别标题,以及一个div作为该类别的内容。因此,我需要对h3文本进行排序,但在DOM中串联移动每个h3及其后续div 我有以下功能,可以在FF和Chrome中使用,但不能在任何风格的IE中使用: function sort_accordion_headers() { var tempArray = []; //Push h3-div p
function sort_accordion_headers() {
var tempArray = [];
//Push h3-div pairs into array
$('.accordion h3').each(function(i,ui) {
tempArray.push(new accordion_sort_object(ui,$(ui).next('div')));
});
//Sort the array on header text
tempArray.sort(function(a,b) {
var keyA = $(a.header).text();
var keyB = $(b.header).text();
return (keyA > keyB) ? 1 : 0;
});
//Clear accordion contents and replace with re-sorted content
for (var i in tempArray) {
$('.accordion').append(tempArray[i].header).append(tempArray[i].div);
}
}
//Creates custom object for sorting accordion headers
function accordion_sort_object($htag,$div) {
this.header = $htag;
this.div = $div;
}
知道为什么这在IE中不起作用吗?感觉它一定和append()或sort()函数有关,但我不确定是什么
编辑:澄清一下,它不会在IE中抛出错误;它只是不执行排序。手风琴部分保持原来的顺序
编辑:问题解决了!感谢Plalx指出,当KeyA小于KeyB时,我返回了0,而我本应该返回-1
排序方法将数组对象排序到位;没有新的数组对象
在执行期间创建。如果在
sortFunction参数,它必须返回以下值之一:
- 如果传递的第一个参数小于第二个参数,则为负值。
- 如果两个参数相等,则为零。
- 如果第一个参数大于第二个参数,则为正值。
?这可能不是您的问题,但是您不应该使用
for in
构造在数组上循环。请参阅是否可能阵列正在排序,但重新插入代码不起作用?也许排序后的断点是一个好主意,可以查看数组是否已被排序Hanks,就是这样。我需要将“return”行改为return1或-1,而不是0。
['b', 'a'].sort(function (a, b) { return a > b? 1 : (b > a? -1 : 0) }); //a, b