1

私のサイトには、ユーザーがアイテムをドラッグまたはクリックして選択できるスライダーがあります。ドラッグすると、親の垂直方向の中心に最も近い項目が選択されます。

CodePen デモ

問題は、jQuery UI のドラッグ可能オプション (カスタム バインディングで実装) の前に Knockout クリック バインディングがバインドされていることです。

再現するには、一番下の数字をクリックしてドラッグし、少し上に移動します (ただし、中央ではありません)。最初のドラッグで正しく機能するように見えるので、それを数回試してみてください...時々。

バインディングは基本的に を呼び出し.draggable、ドラッグが停止するとオブザーバブルを更新します。

HTMLはこのように設定されています。

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

liドラッグ可能な要素でs クリック イベントの発生を停止させる方法はありますか? 出来るだけクリーンな方法で行いたいと思っています。

4

1 に答える 1

0

event.preventDefault(); を試しましたか。ドラッグイベントハンドラーで?アイデアは、ドラッグイベントを検出した場合にイベントのバブリングを停止することです。ドラッグする前にクリックが発生した場合は、ドラッグが発生するまで待ってからアクションを完了する必要があると思います。

于 2013-07-13T14:34:28.620 に答える