如果重新排序节点,如何调用'change'事件

时间:2013-04-02 12:19:56

标签: jquery events treeview

我有一个可嵌套的树,其设计如下 https://gist.github.com/Achaius/5291761

我想只在重新排序节点时触发这个onchange方法。但是现在当前的功能是当我单击'dd-handle'类的元素时,onchange事件正在触发并且调用服务器端脚本。

这种情况正在发生,因为在线:296,我们有 'this.el.trigger(' 改变 ');' 我只想在重新排序列表时触发此更改事件。

1 个答案:

答案 0 :(得分:3)

在页面加载时保存初始订单。在您的更改事件中,将新订单与旧订单进行比较。如果它们不同,则会更改订单:

var idList = getIdList();

$('.dd').nestable();

$('.dd').on('change', function (event) {
    var newIDList = getIdList();

    if (newIDList != idList) {
        console.log("Order has been changed");
        idList = newIDList;
    }
});

function getIdList() {
    var idList = '';
    $('.dd-item').each(function () {
        idList += $(this).data('id');
    });

    return idList;
}

DEMO:http://jsfiddle.net/94NNb/1/