繁体   English   中英

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

[英]Pass Parameter to Custom jQuery Function

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

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

尝试这个:

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

您应该添加另一个功能:

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

请注意,在原始代码中,您已将onSelectChange作为参考传递,而没有启动它onSelectChange() 照原样编写代码,只需启动函数一次即可,而不必绑定它。

您正在另一个函数中调用一个函数,因此我认为,如果将代码修改为以下代码,则它应该可以正常工作(假设onSelectChange()函数可以正常工作:

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

您无法做到这一点,onSelectChange被jQuery的change函数调用,因此它选择要传递的参数。

但是,在您的情况下,这很简单,jQuery会将“ this”绑定到您已将该事件处理程序应用于的项目,因此您可以使用以下代码在onSelectChange中引用该值:

$(this).val();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM