<p id="f">1</p>
<p id="ff">2</p>var foo=function(){
                alert(this.id);
}
$(document.body).on("click","p",foo);
$(document.body).off("click", "#ff", foo);       //为什么清不了#ff上的click事件呢?jquery是最新的1.7.2版本。

解决方案 »

  1.   

    $(document.body).on("click","p",foo);这种写法是事件委托,实际的事件处理是绑定在document.body上的,$(document.body).off("click", "#ff", foo);当然是清除不了了。只能用$(document.body).off("click", "p", foo);清除,当然这样的话连#f也会清除掉
      

  2.   

    我知道是绑在document.body上,
    但是如果要针对单个来清除,不会很麻烦吗?
    比如我要单独清除#ff,而不一定是所有的p,怎么办?
      

  3.   

    <p id="f">1</p>
    <p id="ff">2</p>var foo=function(event){
      var elem = event.target;
      if(!$(elem).is("#ff")){
        alert(elem.id);
      }
    }
    $(document.body).on("click","p",foo);