问题是我想在触发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");
}
);
}
该示例有两个对象,菜单和菜单关闭;当菜单按下时,显示ui框,并运行menu_function,它会触发警报测试消息。问题是当单击menu_close并关闭框并再次打开它时,警报测试将触发两次。我观察到div盒的关闭和再次打开的时间与函数的触发时间相同,我该如何解决?
如果我不想使用unbind,还有更好的解决方案吗?
答案 0 :(得分:5)
您的menu_function()不只是触发警报测试消息 - 它正在为DOM中的所有内容添加一个实时点击监听器,该类具有触发测试警报的“select_li”类。这意味着每次单击#menu时,您都会向.select_li添加另一个侦听器 - 所以如果单击#menu 10x,每次单击.select_li时应该有10个侦听器。
如果你真的试图在点击#menu时显示警告,你的menu_function()应该只是这样:
function menu_function() {
alert("test");
}