jQuery的API方法使用变量作为动态参数

jQuery很多方法是可以传入一个对象做参数的,例如 $.get(url, {name: “aa”}), $.animate({width:”300px”}, 300 );等等这些。

可是实际使用时候,直接把{}参数写入方法,则{}的key是固定的,不可以是变量。

举例,偶写个ajax提交的form,假设全是文本框的值,有如下文本框:

<form>
<input name="name1" value="" />
<input name="n2" value="" />
<input name="nam3" value="" />
.....

</form>

难道提交的时候,要这样写吗: $.ajax{url, {name1: value, n2: value, nam3: value …}}, 要知道,每个input的name属性不是固定的,如果有动态生成的input则更加糟糕。

解决:

var o = {}; //动态的参数o
var $i = $("input");
$i.each(function(){
    var name = $(this).attr("name");
    var value = $(this).val();
    o[name] = value; //{}的key用[]来作为变量
});

//提交ajax
$.post(url,   o , callback);

同理,很多插件效果,使用animate时候,可能只需要改变一个属性,比如指定top(向上)还是bottom(向下),就可以避免写死参数的key,达到一段代码重用的作用。

第二种参数传递,bind()和trigger()之间的参数传递:

$("p").bind("click",  function (event, a, b) {
  // 一个普通的点击事件时,a和b是undefined类型
  // 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]); 

/*
以上是jQuery手册的原句,.click修改为了.bind()而已, 初次使用小郁闷了一下,
一定要注意trgger传参是数组,例如[a, b, c],bind接受参数是function(event, a, b, c),
 第一个一定是event事件的引用,其次依次是参数数组的值列,一一对应
*/

http://cssor.com/jquery-method-use-variable-key-for-params.html

jQuery的API方法使用变量作为动态参数》有 2 条评论

  1. 2012.06.10 @ 15:06 沐心升华

    blog相当不错。。。这主题还是自己弄的?求分享啊。。。

参与评论

电子邮件地址不会被公开。 必填项已用*标注

*

全部分类
Books(4)code(7)database(6)html&css(24)java(11)JavaScript(49)jQuery(24)linux(20)python(1)React(1)share(1)soft(4)solution(53)thinking(17)vim(9)WordPress(8)前端优化(12)拓展(33)服务器(33)移动开发(4)自然(22)