点击功能,里面.off删除处理程序,想要它回来

时间:2014-04-17 09:19:44

标签: jquery click handler

需要你的帮助。

我想:

  1. 点击DIV make it .active
  2. 点击DIV中的SPAN会从此DIV中删除.active
  3. 我尝试这样做的方式的演示:

    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然后再点击其中,我无法再次使用jquery动作点击它,只需在元素中点击一次 < / p>

    我是否对处理程序做错了?请告诉我怎么做。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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