2016-09-22 13 views
1

私は回転の円メニューを持っています。そして、単純なクリックの後、私はクリックイベントを発生させたいが、回転中は - mousemoveはクリックを無視したい。今の私が持っている -mousemoveの間のクリックを防止する方法

<g id="bottomMenuRotate" onMouseDown={this.selectElement.bind(this)}> 

はその後、私の選択機能に見えます -

selectElement(e){ 
    let groupRotate = document.getElementById('bottomMenuRotate'); 
    groupRotate.onmousemove = function(e) {....} 
    groupRotate.onmouseup = function(e){ 
      groupRotate.onmousemove = null; 
    } 
} 

それでは、どのように私はクリック防ぐカントを?私は

groupRotate.onmouseup = function(e){ 
      e.stopPropagation(); 
      groupRotate.onmousemove = null; 

     }; 

または

groupRotate.onmouseclick = function(e){ 
    e.stopPropagation(); 
} 

のようなものを試してみましたが、これはすべてのクリックを防止します。どのように私はそれを行うことができますヒント?他

groupRotate.onmousemove = (e) => { 
    this.setState({ mouseMoving: true }); 
} 
groupRotate.onmouseup = (e) => { 
    this.setState({ mouseMoving: false }); 
} 

どこか:

groupRotate.onmouseclick = (e) => { 
    if (!this.state.mouseMoving) { 
    ... 
    }; 
} 

注意矢印の機能関数内thisを利用できるようにする

+0

例を表示できますか?それが動作するときは、私はそれを正しいとマークします –

答えて

1

だから私は最終的にこれは動きがtrueに設定されている場合にのみクリック防ぐだけで解決

selectElement(e){ 
      let move = false; 
      groupRotate.onmousemove = function(e) { 
       move = true;  
      } 
      groupRotate.onclick = function(e){ 
       move ? e.preventDefault() : false; 
      } 
    } 

を見つけました。

1

が実行されているから、クリックイベントを防ぎ、あなたのonMouseMoveハンドラの状態を設定します。

+0

これは動作することができますが、私はより単純な方法を見つけました、私は投稿します –

関連する問題