这是我到目前为止所拥有的:
<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 :(得分: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();