将参数传递给自定义jQuery函数

时间:2010-09-15 15:37:04

标签: jquery parameters

这是我到目前为止所拥有的:

<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>

4 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:2)

你应该添加另一个功能:

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

请注意,在原始代码中,您已将onSelectChange作为参考传递,但您没有启动它 - onSelectChange()。使用代码,您只需启动一次函数而不是绑定它。

答案 2 :(得分:1)

你正在调用另一个函数中的函数,所以我认为如果你修改你的代码到下面它应该可以正常工作(假设你的onSelectChange()函数正常工作:

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

答案 3 :(得分:1)

你不能这样做,onSelectChange被jQuery的更改函数调用,所以它选择了传递的参数。

在你的情况下,这很简单,jQuery会将'this'绑定到你已应用该事件处理程序的项目,因此你可以使用以下命令在onSelectChange中引用该值:

$(this).val();