Comment rapprocher un événement après l'enregistrement du widget

4

J'écris un widget dont les éléments de formulaire sont associés à un événement de clic. Je le lie en utilisant jQuery.

Cependant, après avoir cliqué sur save , les liaisons sont perdues. Autrement dit, cliquer sur ces éléments ne déclenche plus la fonction.

J'ai essayé d'utiliser la méthode on() jQuery, comme suggéré. ici , mais cela n'aide pas:

    var buttonsHolder=jQuery('#widgets-right .icon_buttons');            
    // save the array of big icons, for later reference, and assign them the click event
    var  buttons=buttonsHolder.children('input');
    buttons.on("click",function(){
        openPanel(jQuery(this),jQuery(this).index());
    });

Je pourrais insérer mon code js dans le formulaire de widget, comme suggéré ici . Cela résout le problème, mais je préfère vraiment garder mon code js séparé.

Que dois-je faire pour que l'événement click de ces éléments fonctionne même après avoir cliqué sur le bouton save ?

    
posée Lea Cohen 19.03.2013 - 13:53

3 réponses

0

Etant donné que la zone de saisie est en train d'être reconstruite (ou la totalité du formulaire), j'ai suivi les conseils donnés ailleurs, et au lieu de lier () à une zone de saisie, je la lie plus haut et j'utilise la délégation d'événements:

jQuery('#widgets-right').on('click','.icon_buttons input',function(){
     openPanel(jQuery(this),jQuery(this).index());
});

Je place toujours quelques déclarations de variable js dans le formulaire du widget, mais ce n'est que par souci de commodité, et ce ne sont que quelques lignes de code, donc cela ne me dérange pas trop.

    
réponse donnée Lea Cohen 26.03.2013 - 19:29
6

Wordpress fournit des rappels pour les interactions avec les widgets. Vous semblez intéressé par deux d'entre eux:

ajouté au widget, mis à jour

Exemple d'utilisation:

jQuery(document).on('widget-updated', function(e, widget){
    // do your awesome stuff here
    // "widget" represents jQuery object of the affected widget's DOM element
});
    
réponse donnée Sergey Arefiev 20.11.2014 - 13:31
0

J'ai ajouté votre code et il a été corrigé pour le widget mis à jour, c.-à-d. lorsque je mets à jour le widget, toutes les options fonctionnent correctement. Mais maintenant que j'ajoute un nouveau widget, cela ne fonctionne pas bien tant que je n'ai pas actualisé la page ou cliqué sur Enregistrer une fois.

J'essaie de corriger le code ci-dessous dans mon projet:

$( document ).on( 'widget-updated' , function( event, $widget ){
    $('.of-color').wpColorPicker();
    $('.selectpicker').selectpicker();
});

J'ai aussi essayé comme ça

$( document ).on( 'widget-updated widget-added' , function( event, $widget ){
    $('.of-color').wpColorPicker();
    $('.selectpicker').selectpicker();
});

Mais cela ne fonctionnait toujours pas pour le nouveau widget ajouté. Aidez-nous à résoudre ce problème.

Merci.

    
réponse donnée Adeel 08.05.2015 - 01:47

Lire d'autres questions sur les étiquettes