2014-04-17 23 views
0

需要你的帮助。点击功能,里面.off删除处理程序,想要它退回

我想:

  1. 点击DIV使得它。主动
  2. 点击SPAN里面DIV移除此DIV的。主动

有我试过的方式DEMO做到这一点:

http://jsfiddle.net/2RwJJ/

$('div').on('click', function() { 

    if (!$(this).hasClass('active')) 
    $(this).addClass('active'); 

    // SPAN pressed 
    $('div.active span').click(function() { 
    $('div.active').off();       // removing DIV handler 
    $('div.active').removeClass('active'); 
}); 
}); 

问题:一旦我点击DIV,然后SPAN在里面,我不能jQuery的动作元素

我做得不对的处理程序单击它进一步次,只有一次?请告诉我如何做到这一点。

+0

为什么你绑定事件处理中的事件?你想[这](http://jsfiddle.net/jwG43/) – Satpal

回答

1

尝试这个

$(function() { 

    $('div').click(function() { 

    if (!$(this).hasClass('active')) 
     $(this).addClass('active'); 
    }); 
    // x pressed 
$('body').on('click','div.active span', function() {  
    $(this).parent().removeClass('active'); 
    }); 
}); 

DEMO HERE

+0

就是这样!谢谢。 – Twardy

1

由于活性类是动态创建,你需要使用委托结合的Click事件

$('document').ready(function() { 

    $('div').on('click', function() { 

     if (!$(this).hasClass('active')) 
      $(this).addClass('active'); 

    }); 
    $(document).on("click", "div.active span", function() { 

     $(this).parent().removeClass('active'); 
    }); 
}); 

Demo

相关问题