Похоже, ваша функция является частью класса, и в этом случае первым аргументом функции должен быть self
, сам объект класса. (Также, как указывал @SRC, вы обычно называете методы функций класса)
Поэтому используйте:
def fuerza_repulsion(self, x):
area = 100 * 100
k = math.sqrt(area / len(self.grafo[0]))
return ((k**2 / x) * c2)
$('.clist div').sort(function(a,b) {
return a.dataset.sid > b.dataset.sid ? 1 : -1; //be carefull, string comparaison
}).appendTo('.clist');
или, возможно,
$('.clist div').sort(function(a,b) {
return parseInt(a.dataset.sid) - parseInt(b.dataset.sid);
}).appendTo('.clist');
sort () обрабатывает отрицательные / положительные результаты,
Более общая функция для сортировки элементов с помощью jQuery:
$.fn.sortChildren = function (sortingFunction: any) {
return this.each(function () {
const children = $(this).children().get();
children.sort(sortingFunction);
$(this).append(children);
});
};
Использование:
$(".clist").sortChildren((a, b) => a.dataset.sid > b.dataset.sid ? 1 : -1);
Вы можете использовать свойство dataset
, в котором хранятся все пользовательские атрибуты data-*
элемента, он возвращает строку, в случае, если вы хотите преобразовать строку в число, которое вы можете использовать parseInt
или +
.
$('.clist div').sort(function(a,b) {
return a.dataset.sid > b.dataset.sid;
}).appendTo('.clist');
И да, ваш код работает здесь, http: // jsfiddle .net / f5mC9 /
Редактировать: Обратите внимание, что IE10! и ниже не поддерживают свойство .dataset
, если вы хотите поддерживать все браузеры, вы можете использовать метод jQuery .data()
:
$('.clist div').sort(function(a,b) {
return $(a).data('sid') > $(b).data('sid');
}).appendTo('.clist');