1

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

CodePen 演示

问题是 Knockout 单击绑定在 jQuery UI 可拖动选项之前绑定(在自定义绑定中实现)。

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

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

HTML 是这样设置的。

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

有什么方法可以使可拖动元素停止li触发点击事件?我想以最干净的方式做到这一点。

4

1 回答 1

0

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

于 2013-07-13T14:34:28.620 回答