jQuery“unbind”回到“绑定”不工作

时间:2013-01-30 11:04:57

标签: jquery bind unbind

当我点击一个元素时,我想取消绑定“mouseenter”和“mouseleave”事件,但是如果点击了另一个元素,我想重新绑定它们 - 这不起作用。

任何帮助?

这是代码:

<script type="text/javascript">
  $(document).ready(function(){
        $("#shape1 img").click(function(){
          $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").unbind('mouseenter mouseleave');
    });

     $("#close").click(function(){
        $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave');
     });
 });
</script>

非常感谢!

3 个答案:

答案 0 :(得分:0)

.bind()函数希望您传递一个函数,以便在触发这些事件时执行。

$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave', function(event) {
    // do something here when the mouseenter or mouseleave events are triggered
});

当你调用.unbind()时,事件处理程序被完全删除,jQuery将不记得它是什么。你不能简单地调用.bind()来撤消它,并让它知道它应该响应那些事件而执行的代码。

此外,根据您的jQuery版本(1.7+),您应该使用.on().off()函数来添加和删除事件处理程序。

答案 1 :(得分:0)

因为您需要分配回调以在事件发生时执行。

尝试:

<script type="text/javascript">
  $(document).ready(function(){
        var myFunctionMouseEnter = function(){
           alert('Hey');
        };
        var myFunctionMouseleave = function(){
           alert('Hey');
        };

        $("#shape1 img").click(function(){
          $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").off('mouseenter mouseleave');
        });

        $("#close").click(function(){
            $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseenter',myFunctionMouseEnter )
                                                                               .on('mouseleave',myFunctionMouseleave );
        });
 });
</script>

答案 2 :(得分:0)

bind只会绑定当前现有项目的事件处理程序。

来自文档Bind()

  

处理程序附加到当前选定的元素中   jQuery对象,因此这些元素必须存在于调用点   发生.bind()

使用On方法。

$("#shape1 img").click(function(){
          $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").off('mouseenter');
        });

        $("#close").click(function(){
            $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseenter',myFunction1);
            $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseleave',myFunction2);
        });