拖放后jquery.repeater更新索引

时间:2015-10-28 15:06:09

标签: jquery jquery-ui jquery.repeater

我正在使用以下jquery插件https://github.com/DubFriend/jquery.repeater在表单中创建可重复的输入字段。我还添加了对通过jquery可排序插件重新排序元素的支持。除了可重复元素的索引被弄乱之外,一切都工作正常。

通过阅读转发器插件的文档,我看到有一种方法可以重置索引https://github.com/DubFriend/jquery.repeater/issues/9,但我无法理解拖放后如何触发功能。谁能建议我怎么做?

这是我的可排序代码

jQuery(".repeater-table").sortable({
    axis: "y",
    cursor: 'pointer',
    opacity: 0.5,
    placeholder: "row-dragging",
    delay: 150,
    handle: ".sort-option",
    update: function(event, ui) {
        // stuff to do on sorting update.
    }

}).disableSelection();

这是转发器代码。

jQuery('.wpumcf-field-repeater-options').repeater({
    show: function() {
        jQuery(this).slideDown();

        jQuery('.repeater-wrapper').animate({
            scrollTop: jQuery('.repeater-table').height()
        }, 300);
    },
    hide: function(deleteElement) {
        if (confirm(wpum_admin_js.confirm)) {
            jQuery(this).slideUp(deleteElement);
        }
    },
    ready: function(setIndexes) {
        $dragAndDrop.on('drop', setIndexes);
    },
    isFirstItemUndeletable: true
});

有人知道如何触发重置吗?

2 个答案:

答案 0 :(得分:0)

尽管这是一个老话题,但对于偶然发现此问题的人来说,

就绪函数将setIndexes方法作为其第一个参数传递,因此您可以在Repeater的ready方法中执行以下操作:

ready: function(setIndexes) {
    $('body').on('click', '#delete_page', function(event) {
        // your logic
        setIndexes(); // this will reindex the list
    });
}

答案 1 :(得分:0)

这是您可以在中继器的“就绪”功能中使用的解决方法:

ready: function (setIndexes) {
    $(".repeater-table").mouseup(function(){
        setIndexes();
    });
},