有什么简化的方法吗
Any ideas on simplifying this?
我是Javascript和jQuery的新手,虽然我很高兴我有了更好的理解,但我只知道我正在绕圈子-很长的路要走。这里的想法是4块4个产品,通过点击一个将展开所选的块和隐藏其余的。请参阅下面我的代码。我假设有更简单的方法,或者至少更简洁,但请告诉我这是不是最好的方法。
$(function () {
var state = true;
$("#toggler").click(function () {
if (state) {
$("#effect2").hide({
duration: 1000
});
$("#effect3").hide({
duration: 1000
});
$("#effect4").hide({
duration: 1000
});
$("#effect2").animate({
backgroundColor: "#fff",
color: "#000",
width: 160,
}, 1000);
$("#effect3").animate({
backgroundColor: "#fff",
color: "#000",
width: 160,
}, 1000);
$("#effect4").animate({
backgroundColor: "#fff",
color: "#000",
width: 160,
}, 1000);
$("#effect").animate({
backgroundColor: "#D1F4FF",
color: "#fff",
width: 700,
}, 1000);
} else {
$("#effect2").show({
duration: 1000
});
$("#effect3").show({
duration: 1000
});
$("#effect4").show({
duration: 1000
});
$("#effect").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
}
state = !state;
});
var state2 = true;
$("#toggler2").click(function () {
if (state2) {
$("#effect").hide({
duration: 1000
});
$("#effect3").hide({
duration: 1000
});
$("#effect4").hide({
duration: 1000
});
$("#effect").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect3").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect4").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect2").animate({
backgroundColor: "#aa0000",
color: "#fff",
width: 700
}, 1000);
} else {
$("#effect").show({
duration: 1000
});
$("#effect3").show({
duration: 1000
});
$("#effect4").show({
duration: 1000
});
$("#effect2").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
}
state2 = !state2;
});
var state3 = true;
$("#toggler3").click(function () {
if (state3) {
$("#effect").hide({
duration: 1000
});
$("#effect2").hide({
duration: 1000
});
$("#effect4").hide({
duration: 1000
});
$("#effect").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect2").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect4").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect3").animate({
backgroundColor: "#aa0000",
color: "#fff",
width: 700
}, 1000);
} else {
$("#effect").show({
duration: 1000
});
$("#effect2").show({
duration: 1000
});
$("#effect4").show({
duration: 1000
});
$("#effect3").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
}
state3 = !state3;
});
var state4 = true;
$("#toggler4").click(function () {
if (state4) {
$("#effect").hide({
duration: 1000
});
$("#effect2").hide({
duration: 1000
});
$("#effect3").hide({
duration: 1000
});
$("#effect").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect2").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect3").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
$("#effect4").animate({
backgroundColor: "#aa0000",
color: "#fff",
width: 700
}, 1000);
} else {
$("#effect").show({
duration: 1000
});
$("#effect2").show({
duration: 1000
});
$("#effect3").show({
duration: 1000
});
$("#effect4").animate({
backgroundColor: "#fff",
color: "#000",
width: 160
}, 1000);
}
state4 = !state4;
});
});
你提到的
这里的想法是4块4个产品,通过点击一个将展开所选的块并隐藏其余的。你正在寻找的功能似乎非常类似于JQuery中的Tab控件,你能给它一个尝试,让我们知道它是否适合你的目的?
如果你想让你的代码得到改进,你可以把你的问题在codereview.stackexchange.com的评论建议?
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- node.js是否具有'match()'方法如果是,语法是什么
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 什么是“;右“;使用addClass/delay/removeClass的方法
- 函数调用方法有什么用
- 列出没有 mysql 的元素的最佳方法是什么