我的表单中有一个按钮,当用户点击它时,它会检查用户是否选择了任何项目,如果没有,则提醒用户。
但如果是真的,那么项目就会隐藏起来并生成一个新的集合;仍然,按钮是固定的。现在,如果用户点击它,它会根据之前设置附加的标准和事件进行检查,而我已经更改了设置,需要设置一个新的“点击”事件,从而产生新的条件。
我已经使用以下代码来关闭主要事件并分配一个新事件,但是,它不起作用并仍然依赖于上一个事件:
//***** 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
答案 0 :(得分:0)
使用.off()
有两种有用的方法。
省略函数参数。它将删除该事件的所有处理程序。
绑定处理程序时使用命名函数,然后使用与.off()
相同的名称。这样,它就可以找到匹配的处理程序并将其删除。
在您的代码中,您使用的是匿名函数,并且每个匿名函数都不同,因此它找不到要删除的处理程序。