Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个排序功能不起作用?_Javascript_Jquery_Sorting - Fatal编程技术网

Javascript 为什么这个排序功能不起作用?

Javascript 为什么这个排序功能不起作用?,javascript,jquery,sorting,Javascript,Jquery,Sorting,要按html的选项文本对其进行排序 $(function() { var options = $('#buybox select[name="group[2]"] option'); var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value };

要按html的选项文本对其进行排序

$(function() {
        var options = $('#buybox select[name="group[2]"] option');

        var arr = options.map(function(_, o) {
            return {
                t: $(o).text(),
                v: o.value
            };
        }).get();

        arr.sort(function(a, b) {
            //return a.t > b.t ? 1 : a.t < b.t ? -1 : 0;// numeric
            var sizes = { "XS" : 0 , "S" : 1, "M" : 2, "L" : 3, "XL" : 4, "2XL" : 5};
            console.log(sizes);
            console.log(a.t);
            console.log(b.t);
            console.log(sizes[a.t]);
            console.log(sizes[b.t]);
            return sizes[a.t] > sizes[b.t] ? 1 : sizes[a.t] < sizes[b.t] ? -1 : 0;
        });

        options.each(function(i, o) {
            o.value = arr[i].v;
            $(o).text(arr[i].t);
        });


    });
$(函数(){
var options=$(“#购买框选择[name=“group[2]”选项”);
var arr=options.map(函数{
返回{
t:$(o).text(),
v:o值
};
}).get();
arr.sort(函数(a,b){
//返回a.t>b.t?1:a.tsize[b.t]-1:size[a.t]
数字排序工作正常。但是属性名a.t和b.t未定义。 这里怎么了

谢谢

HTML选择

    select name="group[2]" onchange="this.form.submit();" style="width: 300px;">
<option selected="selected" value="7">L</option>
<option value="8">XL</option>
<option value="9">2XL</option>
<option value="35">M</option>
</select>
select name=“group[2]”onchange=“this.form.submit();“style=“width:300px;”>
L
特大号
2XL
M

你把事情复杂化了很多

var sizes  = ["XS", "S", "M", "L", "XL", "2XL"],
    select = $('#buybox select[name="group[2]"]');

$('option', select).sort(function (a, b) {
    return sizes.indexOf($(a).text()) - sizes.indexOf($(b).text());
}).appendTo(select);

试试
var options=$(“#购买框选择[name=“group\\[2\\]”选项”)@LShetty:谢谢,但是选择器可以工作。谢谢,太棒了!而且要短得多;-)但我的解决方案的缺点是我必须删减选项文本。但是你的情况好多了。