首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何给鼠标滚轮事件传递参数?

问如何给鼠标滚轮事件传递参数?
EN

Stack Overflow用户
提问于 2009-04-04 21:36:44
回答 6查看 1.4K关注 0票数 1
代码语言:javascript
复制
for (var n = 0; n < 10; n++) {
  $('#content-scroll' + n).mousewheel(function(event, delta) {
    if (delta > 0) sliderUp(n - 1);
    else if (delta < 0) sliderDown(n - 1);
    return false; // prevent default
  });
  n++;
}

我对这段代码有一个问题,变量"n“没有直接传递给鼠标滚轮函数,它只会将鼠标滚轮添加到数字9(最后一个数字),而不是所有的10个元素。谁能解释一下如何将一个变量传递给这个函数,使其保持不变?

EN

回答 6

Stack Overflow用户

发布于 2009-04-04 21:50:15

我使用一个完全的jQuery解决方案来解决这个问题。

代码语言:javascript
复制
$("[id^='content-scroll']").mousewheel( function(event,delta) {
     var n = this.id.replace(/content-scroll/,'');
     if (delta > 0)
        sliderUp(n);
     else if (delta < 0)
        sliderDown(n);
     event.preventDefault();
});

slider:实际上,我甚至可能会尝试找出一种方法来将实际的匹配控件传递给slider*函数,但不知道它们实际做了什么,我不知道这是如何工作的,或者是否会工作。

票数 3
EN

Stack Overflow用户

发布于 2009-04-04 21:40:25

我认为这是javascript中的闭包问题,n实际上是对外部n变量的引用。我相信下面的方法应该是可行的:

代码语言:javascript
复制
for(var n=0;n<10;n++)
{
  var localN = n;
  $('#content-scroll'+n).mousewheel(function(event, delta) {
    if (delta > 0) sliderUp(localN-1);
    else if (delta < 0) sliderDown(localN-1);
    return false; // prevent default
  });

  //is this really needed??
  //n++;
}
票数 2
EN

Stack Overflow用户

发布于 2009-04-05 02:49:20

这个问题在SO (case in point)上被问得很多。您需要一个闭包来在每次迭代中“捕获”n的值:

代码语言:javascript
复制
for(var n=0;n<10;n++)
{
    (function(n){
        $('#content-scroll'+n).mousewheel(function(event, delta) {
            if (delta > 0) sliderUp(n-1);
            else if (delta < 0) sliderDown(n-1);
            return false; // prevent default
        });
    })(n);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/717860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档