我最近遇到了一些代码问题,我需要帮助修复它。基本上,我使用jQuery将按钮附加到网站。我使用大量的功能,以便为这个奇特的网站制作迷你RPG游戏。
例如,按钮靠近和按钮制造商。两者都是功能;按钮制作者使用.append()
为游戏的UI制作一些按钮,然后按钮使用.remove()
删除这些按钮。然后,我使用.on("click",function(){ //code })
将onClick
绑定到某些按钮。这些功能还包括一系列其他功能,带有按钮以返回上一个功能等。
不幸的是,它们似乎无休止地在它们之间循环。我相信按钮是引起它的按钮。有什么想法要解决吗?
我建议不要运行代码,因为它可能会导致标签崩溃或使其无响应。
示例代码:
function buttonMaker1(){
$('body').append('<button id="btn1">Button 1</button>');
}
function buttonMaker2(){
$('body').append('<button id="btn1">Button 1</button>');
$('body').append('<button id="btn2">Button 2</button>');
}
function buttonRemover(){
if($('#btn1').length){
$('#btn1').remove();
}
if($('#btn2').length){
$('#btn2').remove();
}
}
function menu(){
buttonRemover();
buttonMaker2();
$('#btn1').on("click",myFunction());
$('#btn2').on("click",myFunction());
}
function myFunction(){
buttonRemover();
buttonMaker1();
$('#btn1').on("click",menu());
}
menu();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 0 :(得分:3)
将处理程序绑定到函数时,只需提供函数名称。在函数名称后面加括号将在此时调用函数,而不是在事件发生时调用。
function buttonMaker1(){
$('body').append('<button id="btn1">Button 1</button>');
}
function buttonMaker2(){
$('body').append('<button id="btn1">Button 1</button>');
$('body').append('<button id="btn2">Button 2</button>');
}
function buttonRemover(){
if($('#btn1').length){
$('#btn1').remove();
}
if($('#btn2').length){
$('#btn2').remove();
}
}
function menu(){
buttonRemover();
buttonMaker2();
$('#btn1').on("click",myFunction);
$('#btn2').on("click",myFunction);
}
function myFunction(){
buttonRemover();
buttonMaker1();
$('#btn1').on("click",menu);
}
menu();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;