在JQuery中将值传递给函数和变量范围

时间:2014-07-12 01:48:25

标签: javascript jquery function scope

链接到代码示例:

http://jsfiddle.net/99Shr/

此代码适用于给定的点击处理程序,而 $(this)适用于特定的类。

我试图获取click函数中的代码并将其放入其自己的函数中。我想这样做的原因是因为我想用数量++替换数量 - 取决于调用哪个点击处理程序。我遇到的问题是函数中调用的变量是未定义的,因为 $(this)是窗口。

我很清楚,我可能做错了,无法达到我想要的目标,并愿意学习更好的方法来实现它。

function price(change) {
   return change;
}

$('.cart-item-decrease').click(function(){
   price('quantity--');
});

$('.cart-item-increase').click(function(){
   price('quantity++');
});

1 个答案:

答案 0 :(得分:5)

您可以自定义事件处理程序注册,以便将其他数据发送到您的函数:

function myClickHandler(e)
{
    // ...
    quantity += e.data.increment;
    // ...
}

$('.cart-item-increase').on('click', null, {
  increment: 1
}, myClickHandler);

$('.cart-item-decrease').on('click', null, {
  increment: -1
}, myClickHandler);

此处,increment属性将myClickHandler发送至e.data.increment