I have an HTML structure as follows:
-
You can use dataset
property which stores all of the custom data-*
attributes of an element, it returns a string, in case that you want to convert the string to a number you can use parseInt
or +
operator.
$('.clist div').sort(function(a,b) {
return a.dataset.sid > b.dataset.sid;
}).appendTo('.clist');
http://jsfiddle.net/CFYnE/
And yes, your code works here, http://jsfiddle.net/f5mC9/
Edit: Please note that IE10! and below do not support the .dataset
property, if you want to support all browsers you can use jQuery's .data()
method instead:
$('.clist div').sort(function(a,b) {
return $(a).data('sid') > $(b).data('sid');
}).appendTo('.clist');
讨论(0)
-
$('.clist div').sort(function(a,b) {
return parseInt(a.dataset.sid) - parseInt(b.dataset.sid);
}).appendTo('.clist');
讨论(0)
-
A more generic function to sort elements using jQuery:
$.fn.sortChildren = function (sortingFunction: any) {
return this.each(function () {
const children = $(this).children().get();
children.sort(sortingFunction);
$(this).append(children);
});
};
Usage:
$(".clist").sortChildren((a, b) => a.dataset.sid > b.dataset.sid ? 1 : -1);
讨论(0)