jQuery inArray() 总是返回 -1
jQuery inArray() always returning -1
我想对这样的列表进行排序:
<ul>
<li>L</li>
<li>S</li>
<li>XXS</li>
<li>XS</li>
<li>XL</li>
<li>L</li>
</ul>
使用 Javascript 和 jQuery 来获取正确的服装尺寸顺序我的尝试是这样的:
var mylist = jQuery('#filter-size .mana-list');
var listitems = mylist.children('li').get();
listitems.sort(function (a, b) {
var sizes = new Array();
sizes = ["XXXS", "XXS", "XS", "S", "S-M", "S-L", "M", "M-L", "L", "L-XL", "XL", "XXL", "XXXL"];
var compA = jQuery(a).text().toUpperCase();
var compB = jQuery(b).text().toUpperCase();
var asize = jQuery.inArray(compA, sizes);
var bsize = jQuery.inArray(compB, sizes);
return (asize > bsize) ? -1 : (asize < bsize) ? 1 : 0;
})
我的问题是 inArray(( 函数总是返回 -1我做错了什么?
(注意:我在"无冲突"模式下对jQuery进行了usign(
提前谢谢大家
您的代码看起来不必要地复杂。
这也将生成一个排序的项目列表,并避免在比较器函数中使用昂贵的 DOM(和 jQuery(调用:
// get all of the text items, in order, in upper case
var listitems = jQuery('ul').children('li').map(function() {
return jQuery(this).text().toUpperCase();
}).get();
// keep this outside the function to avoid instantiating it
// every time the comparator is called
var sizes = ["XXXS", "XXS", "XS", "S", "S-M", "S-L", "M",
"M-L", "L", "L-XL", "XL", "XXL", "XXXL"];
// just compare the "inArray" values to sort
listitems.sort(function(a, b) {
return jQuery.inArray(b, sizes) - jQuery.inArray(a, sizes);
})
请注意在比较器函数中使用了一个简单的减号运算符 - 这个运算符从大到小排序,比较器只需要产生"负,零,正",而不是"-1,0,1"。
注意:这不会改变页面中的元素 - 请澄清这是否是您的意图。
见 http://jsfiddle.net/alnitak/v3hqB/
Alnitak 优秀答案的后续。
你的排序很好。如果您确实想更新显示器,如下所示(快速编写(就可以了:
var newList = $('<ul></ul>');
newList.append(listitems);
mylist.replaceWith(newList);
(可能有更好的方法...也许newList
可以一次性用listitems
构建。
相关文章:
- jQuery$.inArray()总是返回-1和一个对象数组
- jQuery.inArray(),即使它包含数组中的值,也返回 -1
- jquery inarray总是返回true
- inArray() 始终返回 false
- jQuery inArray() 总是返回 -1
- Jquery inArray 总是在循环中返回 -1
- jQuery inArray() 的返回值
- jQuery $.inArray 总是返回 -1
- $.inArray 始终为对象数组返回 -1
- 为什么/什么时候?inArray返回-1
- $. inarray()返回false -1,即使变量匹配数组
- jQuery . inarray If/Else总是返回-1
- jQuery inArray和Javascript IndexOf返回部分匹配.我需要和完全匹配的人核对一下
- jQuery美元.inArray返回-1,而它应该是0
- 美元.inArray函数没有返回"-1"如果项目不存在
- jQuery inArray()返回-1如果数组包含单个元素
- js,$.inArray,未返回预期的返回值
- jQuery.inArray 返回 -1,而不考虑值
- InArray返回-1与匹配的值
- jQuery inArray总是返回-1