我的网站上有滑块,允许用户通过拖动或点击项目进行选择。拖动时,选择最接近父级垂直中心的项目。
问题是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
点击事件被触发?我想以最干净的方式做到这一点。
答案 0 :(得分:0)
你试过event.preventDefault();在拖动事件处理程序?我的想法是,如果您检测到拖动事件,则停止事件冒泡。如果在拖动之前发生了点击,那么我认为您可能必须等待看是否发生拖动然后完成操作。