Я успешно реализовал JQuery Sortable. Я также могу записать это в базу данных, используя отдельный вызов. Однако это работает только для первого набора соответствующих классов, которые затрагиваются. Второе, и я полагаю, что последующие, если они были, не работают.
<ul class="grouped-articles-list">
<li id="4weight10"></li>
<li id="3weight20"></li>
<li id="2weight30"></li>
</ul>
<ul class="grouped-articles-list>
<li id="5weight50"></li>
<li id="6weight60"></li>
<li id="22weight70"></li>
<li id="18weight80"></li>
</ul>
У меня есть несколько UL, которые имеют общий класс. Визуальная сторона все работает правильно, и они полностью сортируются. Затем я записываю объекты в массив Array = $ (". Grouped-article-list"). Sortable ('toArray') и затем вызываю функцию ajax. Если я делаю трассировку / console.log, он только возвращает объекты предыдущего (1-го) класса.
Можно ли использовать классы несколько раз, но при этом можно использовать массив ToArray? В этом случае, если бы я воздействовал на 2-й UL и выполнил трассировку, он все равно вернул бы ["4weight10", "3weight20", "2weight30"].
Я вставлю свой код ниже, но он немного многословен ...
function makeSortable(){
var before;
var weight;
var newWeight = [];
var newID = [];
$(".grouped-articles-list").sortable({
tolerance: 'pointer',
items: "li:not(.sortable_disabled)",
start: function(event, ui){
newWeight.length = 0;
var resultbefore = $(".grouped-articles-list").sortable('toArray');
before = resultbefore;
//goes through each item and saves their weight to an array
$.each(before, function(i) {
newWeight.push(splitWeightFromId(before[i])[3]);
});
},
stop: function(event, ui) {
newID.length = 0;
var after = $(".grouped-articles-list").sortable('toArray');
$.each(after, function(i) {
//goes through each item in the array and saves out their id
newID.push(splitWeightFromId(after[i])[1]);
// Only adds changed items
if (newID[i] !== splitWeightFromId(before[i])[1]){
//as the items move, but the weights stay the same
//sends the affected ID with the always stationary weight off
change_weight( newID[i], newWeight[i] )
}
});
});
Функция Ajax
function change_weight( link_id, new_weight ) {
$.ajax({
type: "PUT",
url: "/article_relationships/" + link_id,
data: {article_relationship : {
weight : new_weight
} },
datatype: "js",
remote: "true"
});
}
Спасибо за ваше время,
Любые намеки, советы или предложения приветствуются.