2011-02-08 7 views
2

私はjquery selectableプラグインを使用しており、次のような状況で実行しています。jquery selectable - DivとCanvas

HTML5のキャンバスは、DIVの内部に封入されたこの画像で jquery selection

を見てみてください。しかしキャンバスはDIVサイズよりも大きくなっています。丸い矩形は常にDIVのサイズです。キャンバスは、DIV境界の両側に10ピクセルほど大きくなっています。上の画像では、青い境界はキャンバスを表しています。

私はjqueryを選択でき、class = "mt_obj"のすべてのオブジェクトを選択します。

DIVにはこのクラスが割り当てられていますが、キャンバスにはこのクラスが割り当てられていません。

マーキー選択(ラバーバンド)を使用するときに副作用があり、キャンバス領域にある場合はオブジェクトが選択されます。青い枠線と四角い枠線の間をクリックすると、オブジェクトが選択されます。目的の動作は、ユーザーが灰色の丸い四角形をクリックしたときにのみ選択することです。

ここにHTMLコードがあります。 キャンバスオブジェクトの場合は、選択を避けるためにjqueryの選択可能なクラス選択がありますか?。私は、divがキャンバスの親であるため、キャンバスの選択がDIVに伝わると思います。

<div style="display: block; position: absolute; 
top: 181px; left: 217px; width: 398px; height: 34px; z-index: 1;" 
class="mt_obj ui-resizable ui-draggable ui-selected ui-resizable-autohide"> 
<canvas style="position: relative; 
top: -10px; left: -17.4561px;" width="432" height="54"> 
</canvas> 
</div> 
+0

コード全体を投稿できますか? – Adam

答えて

2

これは、暗闇の中でショットのビットですが、私は選択の選択をトリガするためにマウスオーバー、マウスアウト、MouseEnterイベント、およびmouseleaveイベントのいずれか、またはすべてを使用していることを推測しています。このことを念頭に置いて、あなたがselectableを呼び出した後、このような何かを行うことができるかもしれません:

$("div.mt_obj canvas").bind("mouseover mouseout", function(event){ 
    event.stopPropagation(); 
}); 

あなたもそこにmouseentermouseleaveイベントを試みることができます。

+0

動作しませんでした。私はキャンバスにクリックイベントをバインドしようとしましたが、何もトリガーされません。 jqueryはcanvas要素を認識していますか? – Nilesh

+1

Bummer。申し訳ありませんが私は直接の回答はありませんが、他の誰も "実際の"回答で跳んでいないので、私はさらに2つの提案があります。選択可能なオプションにはいくつかの可能性があります。オプションの下でドキュメント[here](http://jqueryui.com/demos/selectable/#option-cancel)をチェックしてください。 'cancel'オプションは、({cancel: 'canvas'}'のように)除外するオブジェクトのタイプを選択します。これは伝播の問題を助けるかもしれません。 'filter'オプションは、(' {filter: 'div.mt_obj'} 'のように)選択するオブジェクトをより明確に定義することを可能にします。 – jwatts1980

関連する問題