2010-09-15 7 views
2

Voici ce que j'ai jusqu'à présent:Passe Paramètre à fonction personnalisée jQuery

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

<script type="text/javascript" src="/js/jquery.js"></script> 

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#weight").change(onSelectChange); 
}); 

function onSelectChange(){ 
     var selected = $('#weight').val(); 
     $.post("tship.php", {weight: selected}, 
      function(data){ 
       $("#ship").html(data.ret_html); 
       }, "json"); 
} 

</script> 


</head> 
<body> 

<select id="weight"> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
</select> 

<br /> 

<div id="ship"> 
</div> 

</body> 
</html> 

Je veux changer de sorte que onSelectChange accepte un seul paramètre. Je dois également pouvoir appeler la fonction pour d'autres événements, et pas seulement lorsque la valeur de la boîte de sélection change. Voici ma tentative, ne fonctionne pas:

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#weight").change(onSelectChange($('#weight').val())); 
}); 

function onSelectChange(parm){ 

     $.post("tship.php", {weight: parm}, 
      function(data){ 
       $("#ship").html(data.ret_password); 
       }, "json"); 
} 

</script> 
+0

Merci pour les réponses à ce jour - mais je vraiment besoin d'avoir la fonction accepter un paramètre afin que je puisse l'appeler pour d'autres événements ainsi – jriggs

Répondre

2

Vous devez ajouter une autre fonction:

$("#weight").change(function(){ 
     onSelectChange($('#weight').val()); 
}); //close the anonymous function 

Notez que dans votre code d'origine que vous avez passé onSelectChange comme référence , vous n'avez pas commencé il - onSelectChange(). Avec le code tel qu'il est, vous démarrez la fonction une fois au lieu de la lier.

+0

ty! Très semblable à la réponse de Mike Robinson. J'ai marqué le vôtre à cause de l'explication, merci encore! – jriggs

3

Essayez ceci:

$("#weight").change(function(){ 
onSelectChange($(this).val()); 
}); 
1

Vous appeliez une fonction dans une autre fonction, donc je pense que si vous modifiez votre code à ce qui suit, il devrait fonctionner bien (en supposant que votre fonction onSelectChange() fonctionne correctement:

$(document).ready(function() { 
    $("#weight").change(
     function() { 
      $(this).onSelectChange($('#weight').val())); 
     } 
    ); 
}); 
1

Vous ne pouvez pas le faire, la onSelectChange est appelée par la fonction de changement de jQuery il choisit ce params passer.

Dans votre cas, cependant, , Est simple, jQuery va lier « ceci » à l'élément que vous avez appliqué ce gestionnaire d'événement, de sorte que vous pouvez faire référence à cette valeur dans votre onSelectChange en utilisant:

$(this).val(); 
Questions connexes