2017-10-14 67 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