use*_*104 0 javascript jquery function unbind
问题是我想在触发mouseevent功能时只触发一次,例如
$(document).ready(function() {
$("#menu").click(function(){
$('#menu_div').show();
menu_function();
});
$("#menu_close").click(function(){
$('#menu_div').hide();
});
});
function menu_function(){
$(".select_li").live(
"click",
function() {
alert("test");
}
);
}
Run Code Online (Sandbox Code Playgroud)
该示例有两个对象,菜单和菜单关闭; 当菜单按下时,显示ui框,并运行menu_function,它会触发警报测试消息.问题是当单击menu_close并关闭框并再次打开它时,警报测试将触发两次.我观察到div盒的关闭和再次打开的时间与功能的开火时间相同,我该如何解决?
如果我不想使用unbind,有没有更好的解决方案?
你的menu_function()不只是触发一个警报测试消息 - 它正在向DOM中的所有内容添加一个实时点击监听器,其中有一个"select_li"类可以触发测试警报.这意味着每次单击#menu时,您都会向.select_li添加另一个侦听器 - 因此,如果单击#menu 10x,则每次单击.select_li时应该有10个侦听器.
如果您真正尝试在单击#menu时显示警告,则menu_function()应该只显示如下:
function menu_function() {
alert("test");
}
Run Code Online (Sandbox Code Playgroud)