javascript - 是否可以将这些相似的功能合并为一个功能?

标签 javascript jquery function

我有 3 个(很快还会有更多)函数,每个函数都执行完全相同的操作,但根据触发鼠标滚轮事件的 div 来控制不同的枚举 div/变量。我很好奇是否有任何技巧可以将这些非常相似的愚蠢函数压缩为一个智能函数。每个 div 都需要自己的 #bigwrapperN#wrapperNopacityNcolorcounterN

$('#bigwrapper1').mousewheel(function(event, delta, deltaX, deltaY) {
    if (delta > 0) {
        opacity1 = opacity1 + .05;
        $('#wrapper1').css('background', "rgba("+colors[colorcounter1]+","+opacity1+")");
    } else if (delta < 0) {
        opacity1 = opacity1 - .05;
        $('#wrapper1').css('background',"rgba("+colors[colorcounter1]+","+opacity1+")");
    }
});

$('#bigwrapper2').mousewheel(function(event, delta, deltaX, deltaY) {
    if (delta > 0) {
        opacity2 = opacity2 + .05;
        $('#wrapper2').css('background', "rgba("+colors[colorcounter2]+","+opacity2+")");
    } else if (delta < 0) {
        opacity2 = opacity2 - .05;
        $('#wrapper2').css('background', "rgba("+colors[colorcounter2]+","+opacity2+")");
    }
});

$('#bigwrapper3').mousewheel(function(event, delta, deltaX, deltaY) {
    if (delta > 0) {
        opacity3 = opacity3 + .05;
        $('#wrapper3').css('background', "rgba("+colors[colorcounter3]+","+opacity3+")");
    } else if (delta < 0) {
        opacity3 = opacity3 - .05;
        $('#wrapper3').css('background', "rgba("+colors[colorcounter3]+","+opacity3+")");
    }
});

最佳答案

使用Attribute Starts with Selector.尝试:

$('div[id^=bigwrapper]').mousewheel(function(event, delta, deltaX, deltaY) {
    var i = $(this).attr("id").split("bigwrapper")[1];
    if (delta > 0) {
   opacity[i] = opacity[i] + .05;       
    $('div[id="wrapper'+i+'"]').css('background', "rgba("+eval('colors[colorcounter'+i+']')+","+opacity[i]+")");
} else if (delta < 0) {
    opacity[i] = opacity[i] - .05;
    $('div[id="wrapper'+i+'"]').css('background', "rgba("+eval('colors[colorcounter'+i+']')+","+opacity[i]+")");
}
});

关于javascript - 是否可以将这些相似的功能合并为一个功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230858/

相关文章:

Jquery mouseover .css 不适用于字体大小

PHP:URL 检测(正则表达式)包括换行符

c++ - 两个函数做完全相同的事情,别名?

string - 如何将字符串列表格式化为 Bash 函数中的一组命令选项/参数对

javascript - 如何使用 Javascript 将没有 ID 的按钮设置为 “click”?

javascript - 使用 Express 提供动态生成的图像或保存的图像

javascript - jQuery 仅选择未嵌套在类似元素中的元素

javascript - 重构重复的三元语句?

javascript - 不显示数据集颜色 :overridden when categoryAxesSettings has minPeriod seconds

javascript - CK 编辑器查找和替换仅在第一次时有效,然后它将在 range[0].setStart 函数中给出索引错误