2017-08-23 8 views
1

あなたがクリックしたときに、私は(onclickの)アクションを持ついくつかのボタンがありますが(任意のソフトウェア上の右クリックのように)4つのオプションのメニューが表示されます。Javascriptを/ jQueryを意図せずにループ、ボタンのonclickイベント

<evento idevento="1000003" class="fc-day-grid-event fc-h-event fc-event 
fc-start fc-draggable" draggable="true" ondragstart="drag(event)" 
data-start="08-23-2017T11:00" data-room="3" data-guestname="guest name 3" 
data-end="08-24-2017T12:00" onclick="mouseDown(event,1000003);"> 
<span class="fc-event eventoCalendario reserved">guest name 3</span></evento> 

と呼ばれる方法onclick:

function mouseDown(e,id){ 
//e = e || window.event; 
if(e.which === 1){ 
    console.log(e); 
    $("#menu").css({'display':'block', 'left':e.pageX, 'top':e.pageY}); 
} 

//controlamos los botones del menú 
$("#menu").click(function(e){ 
    // El switch utiliza los IDs de los <li> del menú 
    switch(e.target.id){ 
     case "AddBooking": 
      $("#bookingModal").modal(); 
      break; 
     case "CheckIn": 
      console.log('a'); 
      //$("#bookingModalcheck").modal(); 
      //checkinRoom(id); 
      break; 
     case "Move": 
      console.log('a'); 
      $("#Move-dialog").modal(); 
      $("#move-original-room").attr('value', id); 
      break; 
     case "Remove": 
      // Método cancelar 
      cancelRoom(id); 
      break; 
    } 
});} 

問題は、私は同じ方法で、他のボタンを数回クリックして、メニューにアクセスし、オプションのいずれかを押すと、例えばchekinのために、これはの場合のチェックインを繰り返していることです以前のどこかでクリックが何回も行われた回数に切り替えるn他のボタン。あたかもクリックが保存されているかのようです。

私はなぜこれが起こるのか知りたいです。あなたがクリックリスナーmutliple回登録されているので、それが複数回呼び出され https://youtu.be/zDrWSkFKW04

答えて

1

は、プレビュービデオを追加します。試してください:

$("#menu").off('click').on('click', function(e){ 
// El switch utiliza los IDs de los <li> del menú 
switch(e.target.id){ 
    case "AddBooking": 
     $("#bookingModal").modal(); 
     break; 
    case "CheckIn": 
     console.log('a'); 
     //$("#bookingModalcheck").modal(); 
     //checkinRoom(id); 
     break; 
    case "Move": 
     console.log('a'); 
     $("#Move-dialog").modal(); 
     $("#move-original-room").attr('value', id); 
     break; 
    case "Remove": 
     // Método cancelar 
     cancelRoom(id); 
     break; 
} 
}); 

.off( 'クリック')は、現在のクリックハンドラをすべて登録解除し、必要なものを割り当てます。 幸運

+0

これは、ありがとうございました! :) –

関連する問題