2010-09-15 172 views
2

這是我到目前爲止有:傳遞參數自定義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> 

我想,這樣onSelectChange接受一個參數來改變它。我還需要能夠爲其他事件調用函數 - 不僅在選擇框值發生變化時。這裏是我的嘗試,不工作:

<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

感謝迄今答案 - 但我真的需要讓該功能接受一個參數,以便我可以爲其他事件調用它 – jriggs 2010-09-15 15:45:05

回答

2

您應該添加另一個功能:

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

注意,在你原來的代碼,你已經通過onSelectChange作爲參考,你沒有啓動它 - onSelectChange()。通過代碼,您可以啓動該功能而不是綁定它。

+0

ty!與Mike Robinson的答案非常相似。我標記你的是因爲解釋,再次感謝! – jriggs 2010-09-15 16:20:48

3

試試這個:

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

你被調用另一個函數中的一個函數,所以我認爲,如果你修改你的代碼如下它應該工作好了(假設你的onSelectChange()功能的正常使用:

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

你不能這樣做,onSelectChange得到由jQuery的變化功能,所以它選擇什麼PARAMS通過調用。

你的情況然而,這是簡單的,jQuery將結合「這個」來,你已經應用了事件處理程序的項目,這樣你就可以在你的onSelectChange使用引用值:

$(this).val();