我想通过使用匹配从类名中提取数字来重新排列我的列表顺序(我改编了post中的代码),但它不起作用。这是我的代码:
HTML:
<ul class="class-of-ul">
<li><a href="#" class="class-of-li-66">66</a></li>
<li><a href="#" class="class-of-li-69 current-li">69</a></li>
<li><a href="#" class="class-of-li-65" >65</a></li>
<li><a href="#" class="class-of-li-68" >68</a></li>
<li><a href="#" class="class-of-li-67" >67</a></li>
</ul>
jQuery:
$(document).ready(function() {
$("ul").append($("li").get().sort(function(a, b) {
return parseInt($(a).attr("class").match(/\d+/)) - parseInt($(b).attr("class").match(/\d+/))
}));
});
这是jsfidle link
答案 0 :(得分:1)
class
用于a
内的li
元素,因此您需要使用.find()
来获取anchor
元素并找到其类
$(document).ready(function () {
$("ul").append($("li").get().sort(function (a, b) {
return $(a).find('a').attr('class').match(/\d+/) - $(b).find('a').attr('class').match(/\d+/)
}));
});
演示:Fiddle
答案 1 :(得分:1)
因为您要对li
元素进行排序,但它们没有任何类。 a
元素有。{1}}。将您的班级移到li
元素,一切都会好起来的。
<ul class="class-of-ul">
<li class="class-of-li-66"><a href="#">66</a></li>
<li class="class-of-li-69 current-li"><a href="#">69</a></li>
<li class="class-of-li-65" ><a href="#">65</a></li>
<li class="class-of-li-68" ><a href="#">68</a></li>
<li class="class-of-li-67" ><a href="#">67</a></li>
</ul>
或者,您可以检查排序中每个a
内的li
。