2016-05-12 2 views
0

первый я зарегистрировать событиеJQuery на() и выключения() не работают

$(document).on('change',"*[dependent-group]", function (e) { 
     e.stopImmediatePropagation(); 
     debugger; 
     if ($(this).val()) { 
      obj.dependentLists($(this), $(this).val()); 
     } else { 
      obj.resetLists($(this)); 
     } 
    }); 

тогда я отключить его с

$(document).off('change',"*[dependent-group]"); 

Проблема заключается в том, что я снова прикрепить событие, оно не Огонь.

ответ

0

$(document).on('change',"*[dependent-group]") Как вы «присоединяете событие снова»? Если, да, он не привязается к первому обработчику. Вы должны передать обработчик.

function handler(e) { 
    e.stopImmediatePropagation(); 
    debugger; 
    if ($(this).val()) { 
     obj.dependentLists($(this), $(this).val()); 
    } else { 
     obj.resetLists($(this)); 
    } 
} 

$(document).on('change',"*[dependent-group]", handler); 
$(document).off('change',"*[dependent-group]", handler); 
$(document).on('change',"*[dependent-group]", handler); 

Обратите внимание, что вы можете также определить переменный переключатель вместо off и реплантации обработчика.

var run = true; 
function handler(e) { 
    if (!run) return; 
    e.stopImmediatePropagation(); 
    debugger; 
    if ($(this).val()) { 
     obj.dependentLists($(this), $(this).val()); 
    } else { 
     obj.resetLists($(this)); 
    } 
} 

$(document).on('change',"*[dependent-group]", handler); 
// ... 
run = false; 
// ... 
run = true; 
0

Чтобы включить его:

$(document).find("*[dependent-group]").change(function (e) { 
     e.stopImmediatePropagation(); 
     debugger; 
     if ($(this).val()) { 
      obj.dependentLists($(this), $(this).val()); 
     } else { 
      obj.resetLists($(this)); 
     } 
    }); 

Чтобы отключить его:

$(document).find("*[dependent-group]").off('change') 

, если вы хотите, вы можете ремень и подтяжки:

$(document).find("*[dependent-group]").off('change').change(function (e) { 
     e.stopImmediatePropagation(); 
     debugger; 
     if ($(this).val()) { 
      obj.dependentLists($(this), $(this).val()); 
     } else { 
      obj.resetLists($(this)); 
     } 
    });