2010-11-18 6 views
0

Cela fait partie d'un code. La question est, est-ce que cette ligne "$("#b_facetNewChild").button().click(function(){" signifie que ce qui suit devrait être tiré lorsque le bouton "facetNewChild" est cliqué? Parce qu'il n'y a pas de fonction "onClick" sur le bouton. Aussi, pouvez-vous expliquer brièvement, qu'est-ce que cela signifie d'avoir imbriqué dans une autre fonction "newChildFacet()" et comment l'appeler? Désolé, mais je suis nouveau à javascript.Thanks!Besoin de comprendre comment les fonctions javascript sont appelées

function newChildFacet() 
    { 
     // button click 
     $("#b_facetNewChild").button().click(function(){ 
       //get selected fId 
      var $fId=getSfSelectedFIds(); 
      if($fId.length>0 && $fId.split(",").length!=1) 
      { 
       messageBox("Tip","Please select <b>ONE</b> as the parent facet. If no facet is selected, the new facet will be created under <b>root</b>."); 
       return false; 
      } 

      //some more stuff here! 
     }); 

     // newChildFacetDialog 
     $("#newChildFacetDialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      title: "New Child Facet", 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog('close'); 
       }, 
       "Create": function() { 
        //get data 
        var $parentId=getSfSelectedFIds(); 

        }); 
        $(this).dialog('close'); 
       } 
      } 
     }); 

    } 
+0

c'est jquery spécifique – mpapis

Répondre

0

D'abord, oui il lié en tant que gestionnaire d'événements click, il courra quand #b_facetNewChild est cliquée - vous ne verrez pas cela dans la source, il est stocké ailleurs dans le DOM.

Vous pouvez l'appeler en invoquant les gestionnaires d'événements click sur cet élément, comme ceci:

$("#b_facetNewChild").click(); 

Peu importe que c'est une fonction imbriquée/anonyme, tout ce que nous préoccupons ici est c'est un click gestionnaire d'événement sur cet élément, de sorte que vous pouvez le déclencher de l'une des façons suivantes:

$("#b_facetNewChild").click(); 
$("#b_facetNewChild").trigger("click"); 
$("#b_facetNewChild").triggerHandler("click"); 
+0

comment je fais ça? Je veux appeler cette fonction quand je clique sur le bouton. Est-ce que c'est déjà réglé? –

+0

@Ahmad - Si vous lancez 'newChildFacet()' cela va accrocher les gestionnaires 'click', alors oui, il fonctionnera sur click, assurez-vous d'appeler' newChildFacet() 'à un moment donné après le chargement du DOM . –

+0

Si cela a été écrit dans un fichier externe .js autre que le fichier de page, est-ce que cela diffère de toute façon? Je crains de ne pas savoir exactement ce qu'est "DOM" exactement? –

0

Vous avez raison.

$("#b_facetNewChild").button().click(function(){ ... }) fait exactement ce que vous voulez dire. Cependant, vous ne verrez pas de gestionnaire onclick dans le HTML, mais seulement si vous inspectez l'élément DOM/JS lui-même (par exemple, en utilisant FireBug). Le fait que cet appel soit situé à l'intérieur d'une fonction signifie simplement qu'il sera seulement appelé (c'est-à-dire, rappel attaché au bouton) une fois que la fonction d'enrobage est appelée.

Questions connexes