javascript - 使用 jQuery 可排序更新绑定(bind)?

标签 javascript jquery knockout.js

我有一个可排序的灯具列表,它是使用 foreach 绑定(bind)从 observableArray 填充的。数组中每个夹具的参数之一是位置。

该位置反射(reflect)了灯具的排序顺序。默认情况下,当使用 foreach 插入灯具时,位置编号的顺序是正确的,但是当您通过拖动项目,位置编号使用 jQuery 更新:

$( "#picks" ).sortable({
    revert: true,
    placeholder: "placeholder",
    containment: 'parent',
    axis: "y",
    handle: '.dragHandle',
    update: function() {
        for (var i = 1; i <= $('#picks li').length; i++) {
            $('#picks li:nth-child('+i+')').find('span.num').text(i);
        }
    }
});

因此,位置数字确实发生了变化,但由于数字是在没有引用可观察值的情况下更新的,因此可观察值本身不会更新。我的问题是,如何使用与 jQuery 可排序相关的更新函数来更新可观察的。

我不想将数字作为输入,因此不能选择使用带有值绑定(bind)的输入!

Demo Fiddle

最佳答案

您需要一个 binding handler for your sortable 。如果你在绑定(bind)处理程序之外搞乱了 DOM,就会遇到这样的问题。作者甚至在 github 页面底部提供了一些演示 fiddle 的链接。

关于javascript - 使用 jQuery 可排序更新绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663925/

相关文章:

javascript - 相对于另一个不起作用的定位元素

javascript - Knockout Computed Observable 不更新 UI

javascript - 将 Javascript onkeypress 转换为 knockoutjs 以在输入时调用

javascript - Mad Libs 下拉列表失败

javascript - 将 URL 转换为 json

javascript - 为什么浏览器会自动向下滚动到 '#hashhyperlinks',我们如何才能阻止它?

javascript - 使用 knockout js 网站教程 - 如何将全名大写(而不仅仅是姓氏)?

javascript - Coffeescript 无法在 Assets 管道中工作

jquery - 删除项目时刷新 jquery.masonry

Jquery Onclick 不再发生第二次