关于 jq的off事件,只想解除当前对象的事件不起作用

  1. 问题描述 :
    因为我的源码是从ajax中加载的,用绑定事件只能用事件委托 。

这里贴出来的代码是demo。
我要实现的效果 是针对当前的p单击两次,off事件生效。
$(this).off('mouseleave click');//这行代码不起作用
$(document).off('mouseleave click','p');//这行却对于所有的都p都起作用,可是只想对当前p起作用怎么办啊 。
请大神帮忙看看。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title>
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
    var x=0;
    $(document).on('click' , 'p' , function(event){
        $(this).animate({fontSize:"+=5px"});
        x++;
        if (x>=2)
        {
            alert(this);
            $(this).off('mouseleave click');//这行代码不起作用
            $(document).off('mouseleave click','p');//这行却对于所有的都p都起作用,可是只想对当前p起作用怎么办啊            
        }
        
    });
    $(document).on('mouseleave' , 'p' ,function(event){
        alert("你离开了");
    })
});
</script>
</head>
<body>

<p>1. 点击这个段落放大字体,只会放大两次。</p>
<p>2. 点击这个段落放大字体,只会放大两次。</p>
<p>3. 点击这个段落放大字体,只会放大两次。</p>
</body>
</html>

演示 :http://sandbox.runjs.cn/show/...

阅读 3.6k
2 个回答

事件委托, 事件不是绑定在P上的, 是绑定在 document 上的, 所以要解除都解除了.

试试这么做把

      $(document).on('click', 'p', function(event) {
        var $this = $(this);
        var times = $this.data('times') || 0;
        if(times < 2){
          $this.animate({
            fontSize: "+=5px"
          }).data('times', ++times);
        }
      });
$(document).on('click' , 'p' , function(event){
        if (x>=2)
        {
            return         
        }
        $(this).animate({fontSize:"+=5px"});
        x++;
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题