2016-03-08 108 views
0

我有2個按鈕。當我點擊按鈕1時,按鈕2被禁用,並且當按鈕1被關閉時,按鈕2被啓用。我正在使用觸發器(「單擊」),然後出現錯誤'超出最大調用堆棧大小'。我怎麼解決這個問題。如何在jQuery中調用點擊功能到另一個點擊功能

$("#btn1").click(function(){ 
     $('#box1').css('display','block'); 
     $('#box1').addClass('tint'); 
     $("#btn2").off('click'); 
    }); 
$("#btn2").click(function(){ 
     alert("Button 2 was clicked"); 
    }); 
$('#boxclose1').click(function(){ 
     $('#box1').hide(); 
     $("#btn2").on("click", function(){ 
      $('#btn2').trigger("click"); error here 
     }); 
    }); 
+0

你觸發點擊處理程序中單擊事件,它相當於這樣做:'函數R(){R(); 「你爲什麼這樣做?重新啓動監聽器後,您是否有意觸發該事件? –

+0

由於調用觸發器會調用$(「#btn2」)on(「click」,function(){'處理程序,它將再次調用觸發器導致無限遞歸調用 –

+0

爲什麼要調用觸發器方法 –

回答

0

這工作得很好

您可以使用

.prop("disabled",true);禁用和

.prop("disabled",false);啓用按鈕

$("#btn1").click(function(){ 
 
     $('#box1').css('display','block'); 
 
     $('#box1').addClass('tint'); 
 
     $("#btn2").prop('disabled', true); 
 
    }); 
 
$("#btn2").click(function(){ 
 
     alert("Button 2 was clicked"); 
 
    }); 
 
$('#boxclose1').click(function(){ 
 
     $('#box1').hide(); 
 
     $('#btn2').prop('disabled', false); 
 
    });
#box1 { 
 
    display:none; 
 
} 
 
.tint { 
 
    color: #ff0000; 
 
}
<script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
 
<div id="box1">Box 1</div> 
 
<button id="btn1">Button 1</button> 
 
<button id="btn2">Button 2</button> 
 
<button id="boxclose1">Box Close</button>

+0

非常感謝 –

0
$("#btn2").on("click", function(){ 
     $('#btn2').trigger("click"); error here 
    }); 

這是點擊元素#事件函數綁定的還挺遞歸調用BTN2