2017-10-14 69 views
-1

我創建的代碼燒製一些click事件中調用多次。這些事件就像使用函數嵌套一樣。當我點擊按鈕多次調用的點擊事件。

對於防爆。我有一個按鈕(b1),它打開一個邊欄(已經隱藏)。我有另一個按鈕(b2),它位於側欄中。當我打開側邊欄並第一次點擊b2時,它運行良好,這是它的一次調用。但是,當我關閉側邊欄並通過使用b1再次打開側邊欄並單擊b2時,單擊兩次觸發事件。同樣,根據使用b1打開的邊欄,它會多次觸發。每次觸發器在B1
下面的點擊增加是我的代碼:Click事件函數

<button class="b1">Show Sidebar</button> 
<button class="b3">Hide Sidebar</button> 
<div class="sidebar"> 
    <input type="text" class="demo"> 
    <button class="b2">Triggers</button> 
</div> 
<script> 
    function getSidebarEvents() { 
     $('.b2').click(function(){ 
      console.log('Triggering Multiple times');  
     }); 
    } 
    $('.b1').click(function() { 
     //Do something to open sidebar 
     getSidebarEvents(); 
    }); 
    $('.b3').click(function() { 
     //Do something to close sidebar 
    }); 
</script> 


我知道我的功能上的B1每次點擊多次調用,然後單擊B2的事件被初始化多的時間。但是我無法改變這個結構,因爲我的代碼現在非常龐大。我需要一些小改動來幫助我解決這個問題。

+0

那是因爲您每次單擊'.b1'時都將一個事件添加到'.b2'。你爲什麼在該功能中附加一個事件? – putvande

+0

代碼附加額外的'click'事件'.b2'選擇在'.b1'選擇 – guest271314

+0

每個'click'我知道這是錯誤的代碼結構,但由於代碼量太大我現在不能改變它現在 – Omkar

回答

2

您應該指定單擊事件處理程序之外的功能,像這樣。現在如果你想從該函數內部模擬點擊,只需調用Click事件。

function getSidebarEvents() { 
    $('.b2').click(); 
} 
$('.b1').click(function() { 
    //Do something to open sidebar 
    getSidebarEvents(); 
}); 
$('.b2').click(function(){ 
    console.log('Triggering Multiple times');  
}); 
$('.b3').click(function() { 
    //Do something to close sidebar 
}); 
+0

輝煌...!謝謝。 – Omkar