0

我正在使用 jQuery gridster 并将位置保存在数据库中。我还有一个用于添加新网格的通用添加新按钮和一个删除按钮在每个网格中删除它。当用户移动、添加或删除时,我正在使用 ajax 调用。在数据库中有一个 user_id 和一个 jsonstring 字段。当用户拖动或单击删除/添加时,我将获取所有网格,创建一个 json 字符串并将其保存到数据库中。

添加新代码:

$(document).on('click', '.add-new', function(){
   gridster.add_widget(html); // html code for GS is saved in html variable
   savegs(); 
})

删除代码

$(document).on('click', 'a.ak-delete', function(){
   gridster.remove_widget($(this).parents('li.gs_w'));
    // I am calling the same save function for delete
    savegs();
})

保存gridster代码:

function savegs(){
var saveJson = "";
$('.gridster > ul > li.gs_w').each(function (){
   var $item = $(this);
   var col  = $item.data('col');
   var row  = $item.data('row');
   var sizex = $item.data('sizex');
   var sizey = $item.data('sizey');
   var saveJson += -------- -------;// generate json
});
// then i generate a json string in the loop above
}

添加新功能效果很好。但是删除有问题。它正在破坏该项目,但仍然在每个函数中获取它。所以它被保存在数据库中。谁能告诉问题是什么?

谢谢。

4

1 回答 1

0

好的..经过一些调整,我找到了解决方案。在删除函数中,我向 li (gs_w) 添加了一个类(已删除)。然后在 savegs 函数中,我正在检查那里是否有一个名为(已删除)的类。如果是这样,则将其排除在保存之外。这很有趣; 但有效!

$(document).on('click', 'a.ak-delete', function(){
   $(this).parents('li.gs_w').addClass('deleted');
   gridster.remove_widget($(this).parents('li.gs_w'));
   savegs();
})

function savegs(){
var saveJson = "";
$('.gridster > ul > li.gs_w').each(function (){
   if (!$(this).hasClass("deleted")) {
      var $item = $(this);
      var col  = $item.data('col');
      var row  = $item.data('row');
      var sizex = $item.data('sizex');
      var sizey = $item.data('sizey');
      var saveJson += -------- -------;// generate json
   }
});
}
于 2013-11-12T08:54:02.483 回答