2009-02-10 10 views
0

J'utilise jQuery et JavaScript. J'ai un événement onclick qui appelle la fonction JavaScript. Comment extraire les arguments de function_A et function_B dans jQuery?Arguments de la fonction JavaScript dans jQuery

Et est-ce la meilleure façon de le faire?

Je dois faire un appel Ajax après un clic JavaScript. Y a-t-il des problèmes de performances avec jQuery?

Mon code:

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-latest.js"></script> 
     <script> 
      $(document).ready(function(){ 
       //Here need to extract the JavaScript function arguments 
       var id1=from_javascript_function_A 
       var id2=from_javascript_function_B 

       var link1=from_javascript_function_A 
       var link2=from_javascript_function_B 
       // 
     </script> 
    </head> 
    <body> 
     <a href='#' onclick=javascript:function_A('first',1)>link1</a> 
     <a href='#' onclick=javascript:function_B('second',2)>link2</a> 
    </body> 
</html> 

Répondre

3

Qu'en est-il de quelque chose comme ça?

<script> 
     $(document).ready(function(){ 
      $("a.a").click(function(e){ 
       DoWork('a',1,function_a); 
      }); 
      $("a.b").click(function(e){ 
       DoWork('b',2,function_b); 
      }); 
     }); 

     function DoWork(s,i,f){ 
      f(s,i); 
      alert("after click:" + s + " " + i); 
     } 

     function function_a(s,i){ 
      alert("a:" + s + " " + i); 
     } 
     function function_b(s,i){ 
      alert("b:" + s + " " + i); 
     } 

    </script> 

</head> 
<body> 

    <a href="#" class="a">a</a> 
    <a href="#" class="b">b</a> 
</body> 
0

Si vous voulez vraiment vraiment extraire les paramètres des appels de fonction, vous devez faire un tas d'analyse manuelle, par exemple,

$("a").each(function(){ 
    var onclicktext = $(this).attr("onclick"); 
    if(onclicktext.indexOf("function_A") > -1){ 
    // Do more parsing here 
    } 
    if(onclicktext.indexOf("function_B") > -1){ 
    // Do more parsing here 
    } 
}); 
0

arguments de fonction sont destinés à être visibles dans cette fonction seulement. Généralement, ce sont des variables, et leurs valeurs n'auront de sens qu'au moment où la fonction est invoquée (dans votre exemple, lorsque le lien correspondant est cliqué). Au sein de $(document).ready, leur valeur n'est pas pertinente.

Si les arguments ne sont pas des variables, ils sont connus et vous ne poseriez pas cette question de toute façon.

0

Si vous ne pouvez pas modifier le code HTML tout ce que vous pouvez faire est de quelques hacks laid:

$("a").each(function(){ 
    fnStr = ($(this).attr('onclick')).toString(); 
    re = /\"[^\"]+\"/ 
    alert(re.exec(fnStr)); 
    re = /\'[^\"]+\'/ 
    alert(re.exec(fnStr)); 
}); 

Le code ci-dessus utilise regular expressions pour obtenir les paramètres entre guillemets. Essayez-le vous-même. différents navigateurs peuvent avoir un comportement différent.

Questions connexes