如何杀死和事件,并在它之后附加一个

时间:2014-01-01 06:48:23

标签: javascript jquery

我的表单中有一个按钮,当用户点击它时,它会检查用户是否选择了任何项目,如果没有,则提醒用户。

但如果是真的,那么项目就会隐藏起来并生成一个新的集合;仍然,按钮是固定的。现在,如果用户点击它,它会根据之前设置附加的标准和事件进行检查,而我已经更改了设置,需要设置一个新的“点击”事件,从而产生新的条件。

我已经使用以下代码来关闭主要事件并分配一个新事件,但是,它不起作用并仍然依赖于上一个事件:

//***** SELECTING CHILD CATEGORIES *****/

$('body').off('click', nextbt, function(){
        nextbt.click(function(){    
     if(child_cat.children('.active-child').length == 0)
     {  
        /** ALERTIFY **/    
    //      alertify.set({labels : {'ok': 'تایید'}});           
    ///     alertify.alert("Select a sub-category please");
          /** END OF ALERTIFY **/   
     }else{ // the user has selected one cateogry
        $('.new-item-cats-list-holder').fadeOut(500);
        $('.big-loader').show();// set the loader
        $.ajax({

        });
     }
    });
}); 

这是附加到按钮的主要主事件$(document).ready()

$('.next-stage-bottom').on('click', function(){
  // when clicked on the next bottom
  if($('.new-item-cat-item-active').length > 0)
  {

    $('.new-item-cats-list-holder').hide()
    $('.new-item-cats-list-holder').empty();
    $('.big-loader').show();
    $.ajax({
        url : base_path('ajax/get_cat_children/'),
        type: "POST",
        data : ({'get_children' : true, 'parent_id' : selected_cat}),
        success : function(msg){                   
            $('.new-item-cats-list-holder').show();
            $('.new-item-cats-list-holder').append(msg);                    
            $('.big-loader').hide();
        },
    });
  }// end of length if
  else
  {
  /** ALERTIFY **/  
    alertify.set({labels : {'ok': 'تایید'}});           
    alertify.alert("Select a cateogry first");
  /** END OF ALERTIFY **/   
  }
});// end of click event for button         

1 个答案:

答案 0 :(得分:0)

使用.off()有两种有用的方法。

  1. 省略函数参数。它将删除该事件的所有处理程序。

  2. 绑定处理程序时使用命名函数,然后使用与.off()相同的名称。这样,它就可以找到匹配的处理程序并将其删除。

  3. 在您的代码中,您使用的是匿名函数,并且每个匿名函数都不同,因此它找不到要删除的处理程序。