在jQuery中传递参数

时间:2010-01-26 16:59:59

标签: jquery

我所拥有的是什么,所以我只想问是否有一种更优雅的方式来做到这一点。我有:

<form method="post" action="15Action.cfm">
<p><input id="A" name="A1"></p>
<p><input id="B" name="B1"></p>
<p><input id="C" name="C1"></p>
<input name="Submit" type="submit" value="submit">
</form>

如果更改A或B,则将两个字段连接在一起并将它们放入C. 我所拥有的是:

function doit(A,B) {
   return A+B;
};
$(function() {
   var A = $('#A');
   var B = $('#B');
  $('#A, #B').change(function() {
  $('#C').val(doit(A.val(),B.val()));
  });
});

我想知道我是否应该写

$('#C').val(doit(A,B))
相反,或者传递A.val(),B.val()?

是否可以接受

4 个答案:

答案 0 :(得分:1)

无论哪种方式都很好......它依赖的是你期望永远传递给doit的什么类型的参数。如果你使用jQuery对象(阅读元素),我可能会将选择器中的jinut传递给doit并在那里进行所有查找 - 或者你可以自己传递jQuery对象,因为这不会产生很大的不同

function doit(a,b){
  return $(a).val()+$(b).val();
}

// these are then functionally equiv.
doit('#A','#B');
doit($('#A'), $('#B'));

答案 1 :(得分:1)

  

我想知道我是否应该写

$('#C').val(doit(A,B))
     相反,或者传递A.val(),B.val()?

是否可以接受

传递A,B不起作用。您的解决方案看起来相当优雅,您甚至可以缓存jQuery对象以在您使用的闭包中获得A,B。

你可以通过以下方式使它更简洁:

function doit(A,B) {
   return A+B;
};
$(function() {
   var A = $('#A');
   var B = $('#B');
   $('#A, #B').change(function() {
      $('#C').val(doit(A.val(),B.val()));
   });
});

答案 2 :(得分:1)

如果在doit()内,您需要A和B的值,两种方法都是相同的。我会保留你的代码。

答案 3 :(得分:1)

如果你所做的只是连接两个值,我甚至不会打扰doit()函数,只需将这两个值粘合在一起。

$(function() {
   $('#A, #B').change(function() {
      $('#C').val($('#A').val() + $('#B').val());
   });
});