我想按计算的小数值对以下选择选项进行排序,不包括 --please select-- 选项。
<select class="wpsc_select_variation">
<option value="0">-- Please Select --</option>
<option value="13">1"</option>
<option value="21">2''</option>
<option value="11">3/4"</option>
<option value="6">3/8"</option>
<option value="10">5/8"</option>
<option value="17">1-1/2''</option>
<option value="15">1-1/4''</option>
<option value="19">1-3/4''</option>
<option value="7">1/2"</option>
</select>
到目前为止我整理的代码:为简洁起见,添加到 pastebin 中。
关联
这可以解释注释 1 数组的长度为 3。但为什么是 3?为什么不是9?为什么Chrome显示全数组,但长度还是3,而Firefox点击父+后显示全数组,父却说undefined, option, option?
使困惑...
编辑:编辑以允许多个选择框:如果我错了,请纠正我。
$(".wpsc_select_variation").each(function(index, element){
$($(element).children().get().sort(function (a, b) {
return parseInt(a.value) - parseInt(b.value);
})).appendTo($(element));
});
使用对象的最新编辑。开始:
var els = new Array();
var counter = 0;
$j("select.wpsc_select_variation option").each(function(index, ele){
var obj = new Object;
var i = $j(ele).text();
i = i.replace("\"", "");
i = i.replace("''", "");
if (i.indexOf("-") >= 0){
i = i.split('-');
split = i[1].split('/');
i = eval(i[0]) + split[0] / split[1];
}
else if(i.indexOf("/") >= 0){
split = i.split('/');
i = split[0] / split[1];
}
i = eval(i);
obj.ind = i;
obj.ele = ele;
els[counter] = obj;
counter++;
});
els.sort(function (a, b) { return parseInt(a.ind) - parseInt(b.ind) });
console.log(els);
上述结果:
[Object { ind=NaN, ele=option}, Object { ind=0.75, ele=option}, Object { ind=0.375, ele=option}, Object { ind=0.625, ele=option}, Object { ind=0.5, ele=option}, Object { ind=1, ele=option}, Object { ind=1.5, ele=option}, Object { ind=1.25, ele=option}, Object { ind=1.75, ele=option}, Object { ind=2, ele=option}]
它似乎在某种程度上对它们进行了排序,但正如您所看到的,它们仍然是乱序的。