我在表单上有一个选择框,它带有一个增量的rel属性.
我有一个函数可以通过.text()值将选项排序成字母顺序.
我有一个函数可以通过.text()值将选项排序成字母顺序.
我的问题是,使用jQuery,如何使用rel属性按升序排序?
<option rel="1" value="ASHCHRC">Ashchurch for Tewkesbury </option> <option rel="2" value="EVESHAM">Evesham </option> <option rel="3" value="CHLTNHM">Cheltenham Spa </option> <option rel="4" value="PERSHOR">Pershore </option> <option rel="5" value="HONYBRN">Honeybourne </option> <option rel="6" value="MINMARS">Moreton-in-Marsh </option> <option rel="7" value="GLOSTER">Gloucester </option> <option rel="8" value="GTMLVRN">Great Malvern </option> <option rel="9" value="MLVRNLK">Malvern Link </option>
我的排序函数:var object;可以是整个表格中的许多选择框之一.
$(object).each(function() { // Keep track of the selected option. var selectedValue = $(this).val(); // sort it out $(this).html($("option",$(this)).sort(function(a,b) { return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 })); // Select one option. $(this).val(selectedValue); });
解决方法
如果你想按rel排序,你应该改变你的功能
$(this).html($("option",b) { var arel = $(a).attr('rel'); var brel = $(b).attr('rel'); return arel == brel ? 0 : arel < brel ? -1 : 1 }));
用parseInt()编辑
$(this).html($("option",b) { var arel = parseInt($(a).attr('rel'),10); var brel = parseInt($(b).attr('rel'),10); return arel == brel ? 0 : arel < brel ? -1 : 1 }));