Gestionnaire d’événements Store and Restore

S’il vous plaît aider à réparer ma fonction, stocker l’événement d’un élément et les supprimer, puis réinstallez;

Je ne sais pas où est le problème, la fonction ne supprimera que l’événement de l’élément et ne restaurera pas.

S’il vous plaît aider à résoudre.

HTML

a b 

JS

 $("#a").hover(function(){alert("test")}); $("#b").click(function(){ Test_Handle('#a'); } function Test_Handle(id) { target = $(id); if($.hasData(target.get(0))){ // if the elment has event || target = element target[0].event_name = []; target[0].event_handler = []; events = $._data(target.get(0), 'events'); // take all events of the element $.each(events, function(event_name, event_handler){ target[0].event_name.push(event_name); target[0].event_handler.push(event_handler); }); //store the events target.off(); // delete the events }else{ // has the elment no event for(var i=0; i < target[0].event_handler.length; i++){ target.on(target[0].event_name[i], target[0].event_handler[i]); } // re-store the events target[0].event_name = []; target[0].event_handler = []; //reset } } 

    Vous avez presque compris, lorsque vous parcourez les événements, event_handler est en réalité un tableau des gestionnaires de cet événement (un événement peut avoir plusieurs gestionnaires attachés). Vous devez donc enregistrer ces gestionnaires dans un tableau pour chacun des événements afin de pouvoir les rattacher ultérieurement.

    Essayez ceci :

     function Test_Handle(id) { target = $(id); events = $._data(target[0], 'events'); if(events!=undefined){ target[0].event_name = []; target[0].event_handler = []; $.each(events, function(event_name, event_handler){ target[0].event_name.push(event_name); var _handlers=[]; for(var i=0;i 

    Un séjour sans faille

    Exemple JSFiddle