javascript - 抽象重复的 addEventListener ('click' ...函数以优化代码

标签 javascript css html

编辑:寻找非 Jquery 答案

就目前而言,相对于它的简单性而言,这段代码非常长。特定实例之间的唯一区别是指示目标 ID 的数字。有没有一种方法可以使用单个函数实现相同的结果,该函数根据单击的 div 获取变量?

var $ = Sizzle,
p0 = $("#p0")[0];
p1 = $("#p1")[0];
p2 = $("#p2")[0];
p3 = $("#p3")[0];
p4 = $("#p4")[0];
p5 = $("#p5")[0];
p6 = $("#p6")[0];
p7 = $("#p7")[0];
lp0 = $("#productMenu li")[0];
lp1 = $("#productMenu li")[1];
lp2 = $("#productMenu li")[2];
lp3 = $("#productMenu li")[3];
lp4 = $("#productMenu li")[4];
lp5 = $("#productMenu li")[5];
lp6 = $("#productMenu li")[6];
lp7 = $("#productMenu li")[7];


lp0.addEventListener('click',open0,false);
lp1.addEventListener('click',open1,false);
lp2.addEventListener('click',open2,false);
lp3.addEventListener('click',open3,false);
lp4.addEventListener('click',open4,false);
lp5.addEventListener('click',open5,false);
lp6.addEventListener('click',open6,false);
lp7.addEventListener('click',open7,false);



function open0(){
p0.classList.toggle('off');
}

function open1(){
p1.classList.toggle('off');
}
function open2(){
p2.classList.toggle('off');
}

function open3(){
p3.classList.toggle('off');
}
function open4(){
p4.classList.toggle('off');
}

function open5(){
p5.classList.toggle('off');
}
function open6(){
p6.classList.toggle('off');
}

function open7(){
p7.classList.toggle('off');
}

最佳答案

你可以试试这段代码:

$('#productMenu li').on('click', function () {
  var index = $("#productMenu li").index($(this));
  $('#p' + index).toggleClass('off');
});

关于javascript - 抽象重复的 addEventListener ('click' ...函数以优化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467578/

相关文章:

javascript - 在段落前添加具有 DOM 模型的元素

javascript - 在 JavaScript 中将文本输出到输入字段

width - 不使用 100% 宽度的灵活排水沟?

javascript - 在独立容器层之间使用 vanilla js 交叉淡入淡出幻灯片

MVC2 中的 Html.LabelFor 帮助程序

.net - .NET webforms 的 HTML5 需要 =""属性

javascript - 带有数字格式(单位)的图表

javascript - 来自已解析 Promise 的数据未在组件 View 中正确加载(Angular2、JavaScript)

html - 避免只有图片没有文字作为网站导航链接的问题

javascript - 当用户点击外部时关闭多选下拉列表(不同情况)