web-dev-qa-db-fra.com

comment appeler une fonction d'une autre fonction dans Jquery

<script>
  $(document).ready(function(){
    //Load City by State
    $('#billing_state_id').live('change', function() {
       //do something
    });   
    $('#click_me').live('click', function() {
       //do something
       //need to recall $('#billing_state_id').live('change', function() { but how?
    });   
  });
</script>

Load City by State fonctionne bien mais je ne sais pas s'il est possible ou non de l'appeler dans une autre fonction comme $('#click_me').live('click', function().

8
user1911703

Je suppose que vous ne voulez pas relier l'événement, mais appelez le gestionnaire.

Vous pouvez utiliser trigger() pour déclencher des événements:

$('#billing_state_id').trigger('change');

Si votre gestionnaire ne s'appuie pas sur le contexte de l'événement et que vous ne souhaitez pas déclencher d'autres gestionnaires pour l'événement, vous pouvez également nommer la fonction:

function someFunction() {
    //do stuff
}

$(document).ready(function(){
    //Load City by State
    $('#billing_state_id').live('change', someFunction);   
    $('#click_me').live('click', function() {
       //do something
       someFunction();
    });
  });

Notez également que live() est obsolète, on() est le nouveau paramètre d'actualité.

10
Jason P

enveloppez votre code partagé dans une autre fonction:

<script>
  function myFun () {
      //do something
  }

  $(document).ready(function(){
    //Load City by State
    $(document).on('change', '#billing_state_id', function() {
       myFun ();
    });   
    $(document).on('click', '#click_me', function() {
       //do something
       myFun();
    });   
  });
</script>
2
collapsar

Je pense que dans ce cas, vous voulez quelque chose comme ça:

$(window).resize(resize=function resize(){ some code...}

Maintenant, vous pouvez appeler resize () dans d’autres fonctions imbriquées:

$(window).scroll(function(){ resize();}
0
ganji