2

jQuery UI Selectable コンポーネントを使用しています。コントロール/コマンドを押さずに複数の選択を許可するために、次のものがあります:(別のスレッドから)

jQuery("#myUnorderedList").bind("mousedown", function(event) {
    return event.metaKey = true;
}).selectable();`

これは、複数のアイテムを選択し、ドラッグして選択できるようにするのにうまく機能します。問題は、mousedown を metaKey にバインドすると、コマンド/コントロール キーを実際に押した場合と同じ動作が得られないことです。

動作を示す短いスクリーンキャストを次に示します -スクリーンキャストの例

これはjsfiddleの例です(自分ではなく別のユーザーから)-metaKeyをtrueに設定

jfiddle の例で、クリックしてドラッグして最初の 4 つを選択したとします。現在4名が選ばれています。metaKey が true に設定されているため、5 または 6 をクリックして選択に追加できます。代わりに、5 をクリックして 4 (すでに選択されている) の上にドラッグし、マウスを離さずに 5 にドラッグすると、4 が選択されなくなります。

同じことを試してみてください。ただし、今回はコマンド/コントロールを保持します。最初の 4 つが選択されている場合は、5 をクリックして (コマンド/コントロールを押したまま) 4 の上にドラッグしてから下に戻すと、4 が選択されたままになります。

基本的には、ドラッグすると選択されたアイテムが選択解除されますが、コマンド/コントロールキーを押すと、選択されたアイテムが選択されたままになります。

停止、開始、選択、選択解除の各イベントのメタキーをconsole.logに記録しました。メタキーがマウスダウンにバインドされている場合、すべてtrueを返しますが、コマンドキーを実際に押した場合とは動作が異なります。

4

1 に答える 1

0

jQuery 1.7 でメタ キーの動作が変更されました。

バグ #10666 @bugs.jquery.comを参照してください。

jQuery 1.7 より前

event.metaKeyこのコードに基づいて割り当てられました:

 if ( !event.metaKey && event.ctrlKey ) {
      event.metaKey = event.ctrlKey;
 }

しかし、現在、jQuery 1.7 のコードは次のように変更されています。

 if ( event.metaKey === undefined ) { 
     event.metaKey = event.ctrlKey;
 }

そして、そのコードは、metaKey が定義されていない場合にのみ、ctrlKey を metaKey に割り当てることを意味します。

于 2012-03-13T19:31:19.830 に答える