0

问题是我只想在触发 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");
        }
    );
}

该示例有两个对象,menu 和 menu close;按下菜单时,会显示 ui 框,然后运行 ​​menu_function ,它会触发警报测试消息。问题是单击 menu_close 并关闭框,然后再次打开它时,警报测试将触发两次。我观察到div box关闭和再次打开的次数与函数的触发次数相同,我该如何解决?

如果我不想使用 unbind,有没有更好的解决方案?

4

1 回答 1

5

您的 menu_function() 不仅仅是触发警报测试消息 - 它正在向 DOM 中具有触发测试警报的“select_li”类的所有内容添加实时点击侦听器。这意味着每次单击#menu 时,都会将另一个侦听器添加到.select_li - 因此,如果单击#menu 10x,则每次单击.select_li 应该有10 个侦听器。

如果您真的想在单击#menu 时显示警报,那么您的 menu_function() 应该看起来像这样:

function menu_function() {
    alert("test");
}
于 2013-01-10T17:44:47.437 回答