Knockout单击绑定除了拖动时

时间:2013-07-12 17:58:40

标签: javascript html knockout.js jquery-ui-draggable

我的网站上有滑块,允许用户通过拖动或点击项目进行选择。拖动时,选择最接近父级垂直中心的项目。

CodePen Demo

问题是Knockout点击绑定在jQuery UI draggable选项之前被绑定(在自定义绑定中实现)。

要重现,请尝试单击并拖动底部数字,然后将其向上移动一点(但不要在中间)。尝试这样做几次,因为它似乎在第一次拖动时正常工作......有时候。

绑定基本上调用.draggable,并在拖动停止时更新observable。

HTML就像这样设置。

<ul data-bind="slideSelect: thing, foreach: nums">
  <li data-bind="click: $root.thing.set($data), text: $data">1</li>
</ul>

有没有办法让可拖动元素阻止li点击事件被触发?我想以最干净的方式做到这一点。

1 个答案:

答案 0 :(得分:0)

你试过event.preventDefault();在拖动事件处理程序?我的想法是,如果您检测到拖动事件,则停止事件冒泡。如果在拖动之前发生了点击,那么我认为您可能必须等待看是否发生拖动然后完成操作。