6

我继承了一些代码,其中有一行我不理解。

函数updateQty(){obj.find('.inputAmount').html(数量);input.val(数量);$.each(change_actions,function()){本(数量);});}

里面到底发生了什么.每个功能?我从没见过这个(var)以前用过这种方法。

7
  • 9
    change_actions必须是函数数组。在普通js中,它的工作方式如下:function apply(v){return this(v);}[1,2,3].map(apply,RegExp);
    – 丹达维
    2013年7月24日19:50
  • 添加console.log(this)控制台.dir(this)到回调主体,看看是什么请参阅。 2013年7月24日19:53
  • $.each()函数可用于迭代任何集合,无论它是对象还是数组。对于数组,回调每次都传递一个数组索引和相应的数组值。(也可以通过this关键字访问该值…)从这里:api.jquery.com/jquery.each网站 2013年7月24日19:53
  • @斯维拉梅隆-我已经阅读了API。但它根本没有以格式化此特定代码的方式进行记录。如果您注意到,代码不是(这个)。某物; 它是这个(某物). 2013年7月24日19:56
  • @EmmyS见上文,我已经写了文档中所说的内容 2013年7月24日19:59

3个答案

重置为默认值
5

的内部每个$指您正在循环的当前对象。

对象必须是函数才能向其传递内容。

作者使用绑定设置自己的事件,因此可能更改操作(_A)当数量发生变化时,订阅运行的函数。

尝试以下操作:

//使用值初始化var操作=[函数(x){console.log(I see a new x:'+x);}];//“稍后”添加操作push(function(x){console.log('Yup,a new x:'+x);});//然后执行它们:$.each(actions,function()){这(4);});//再加一个push(函数(x){console.log(x+“看起来很新”);});//对他们再重申一遍//然后执行它们:$.each(actions,function()){第(5)条;});

结果是:

//第一次迭代(仅2个订阅事件)[15:56:50.030]“我看到一个新的x:4”[15:56:50.030]“是的,一个新的x:4”//第二次迭代(现在我们有3次,稍后添加了一次)[15:56:50.030]“我看到一个新的x:5”[15:56:50.030]“是的,一个新的x:5”[15:56:50.030]“5看起来很新”//<--新订阅

把它想成点击事件以及如何通过绑定来添加订阅$('元素').click()。每次单击时,都会触发任何订阅的事件。

您可以参考以下示例:

变量change_actions=[函数(x){alert(x+1);},函数(x){alert(x+2);}];var数量=5;$.each(change_actions,function()){本(数量);});

J轴:http://jsfiddle.net/fuyz2/

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.