我正在尝试完成多个addEventListener,但出了点问题?
例如,如果我们在页面上有3个div,第一个显示在开头,另外两个隐藏。
<div id="d1">
<a onClick="
document.addEventListener("backbutton", show_div1, false);
$('#d1').hide();
$('#d2').show();
"
</a>
</div>
<div id="d2"></div> - initially hidden
<div id="d3"></div> - initially hidden
它显示div 2,隐藏div 1并将后退按钮的监听器设置为show_div1(),一切正常。在按下后退键时,它会提醒“我应该显示#div1”,因为它应该(// $('#d1')。show();被注释) < / p>
show_div1(){
//$('#d1').show(); $('#d2').hide();
alert ('I should show #div1');
}
但现在出现了问题
<div id="d2">
<a onClick="
document.removeEventListener("backbutton", show_div1, false);
document.addEventListener("backbutton", show_div2, false);
$('#d2').hide();
$('#d3').show();
"
</a>
</div>
它立即触发“我应该显示#div2”甚至没有按下后退按钮! addEventListener就像启动主函数show_div2()而不只是将后退按钮上的监听器设置为该函数。
show_div2(){
//$('#d2').show(); $('#d3').hide();
alert ('I should show #div2');
}
发生这种情况的可能原因是什么?
答案 0 :(得分:2)
试试这个, 在设备就绪时为这样的后退按钮添加一个监听器
var onBackButton = function(){show_div2();}; //the initial state
document.addEventListener("backbutton", onBackButton, false);
并且
请勿使用onClick with phoneGap
使用href或ontouchend并确保你的&lt; a&gt;是可见的,因为你里面没有任何东西(你的css文件中的显示块)
<div id="d1">
<a href='javascript:onDivClick(1)' style='display:block; width:100%; height:100%;'></a>
// <a ontouchend='onDivClick(1)'></a> will be better
</div>
<div id="d2">
<a href='javascript:onDivClick(2)' style='display:block; width:100%; height:100%;'></a>
</div>
在javascript中
function onDivClick(var case)
{
switch(case)
case 1:
$('#d1').hide();
$('#d2').show();
onBackButton = function(){show_div1();};
break;
case 2:
$('#d2').hide();
$('#d1').show();
onBackButton = function(){show_div2();};
break;
}