jQuery可排序,onUpdate()中的变量值丢失

时间:2018-02-10 09:11:07

标签: jquery

我使用以下Sortable插件:

https://github.com/rubaxa/Sortable

代码在大多数情况下都能正常工作。我遇到的问题是 onUpdate()回调。由于某种原因,它总是传回价值"数字"在prompt

var items = {

    social: {
        // some variables, but not relevant to this test case
    },
    extra: {
        // some variables, but not relevant to this test case
    },
    media: {
        // some variables, but not relevant to this test case
    },
    addresses: {
        // some variables, but not relevant to this test case
    },
    numbers: {
        // some variables, but not relevant to this test case
    },
};

    for (var prompt in items) {
        if ($('#input_fields_wrap_'+propt+'_fields').length) {

            console.log("setting up sortable for " + 'input_fields_wrap_'+prompt+'_fields')
            Sortable.create(document.getElementById('input_fields_wrap_'+prompt+'_fields'), {
              animation: 150,
              onUpdate: function (evt) {
                console.log("FOO: "+ prompt)
                updateSortNumbers(pro,pt)
              }
            });
        }
    }

当您更改排序顺序时,您总是得到:

  

FOO:数字

即使您正在对其他字段进行排序。我认为它与我初始化它的顺序有关:

  • 社会
  • 额外
  • media
  • 地址

因为"数字"是最后一个,总是被选中。有没有办法可以在Sortable元素本身设置一个值,以确定哪个被调用?

1 个答案:

答案 0 :(得分:0)

好的,我终于弄清楚如何做到这一点。诀窍是用以下方法获取有问题的物品:

var item = evt.item;

然后item拥有一个名为className的值,所以我可以这样做:

var this_is = item.className.replace("-item","");

这正确地保留了我需要的价值。所以最终的工作代码是:

Sortable.create(document.getElementById('input_fields_wrap_'+propt+'_fields'), {
          animation: 150,
          onUpdate: function (evt) {

            var item = evt.item;
            // console.log(item.className)
            var this_is = item.className.replace("-item","");
            console.log("FOO: "+ this_is)
            updateSortNumbers(this_is)
          }
});