如何优化此JavaScript
How can i optimize this JavaScript
我正在使用以下JavaScript在菜单中查找一些信息。
有没有可能优化它,使我只有一个函数而不是n?
$(document).ready(function(){
$("#km1").click(function(){
$("#km1tog").slideToggle("slow");
});
});
$(document).ready(function(){
$("#km2").click(function(){
$("#km2tog").slideToggle("slow");
});
});
$(document).ready(function(){
$("#km3").click(function(){
$("#km3tog").slideToggle("slow");
});
});
您可以使用for循环并创建IIFE,以保留i
的值。
$(document).ready(function() {
for (var i = 1; i <= 3; i += 1) {
(function(i) {
$("#km" + i).click(function() {
$("#km" + i + "tog").slideToggle("slow");
});
}(i));
}
});
try:
$(document).ready(function(){
$("#km1,#km2,#km3").click(function(){
$("#"+this.id+"tog").slideToggle("slow");
});
});
首先,您只需要一个$(document).ready
调用,这样会稍微优化它。至于其余部分,它在很大程度上取决于标记的结构。
理想情况下,您不会在元素上使用ID,您只需通过它们的关系来引用它们,例如:
$(document).ready(function(){
$(".top-menu").click(function(){
$(this).find(".sub-menu").slideToggle("slow");
});
});
你试过这个吗?
$(document).ready(function() {
$.each([1,2,3,4,5,6,7,8,9,10], function(i) {
$("#km" + i).click(function(){
$("#km" + i + "tog").slideToggle("slow");
});
});
});
如果可能的话,在所有"可点击"的div中添加一个类,并尝试这样的操作:
$(document).ready(function(){
$(".km").click(function(){
id = $(this).attr('id');
$("#"+id+"tog").slideToggle("slow");
});
});
相关文章:
- 使用 requirejs 并尝试将 javascript 优化为供应商文件和应用程序文件
- 使用 Javascript 优化一个巨大的无序列表
- Javascript:优化具有多种颜色的大文本的插入
- JavaScript 优化和缩小与 gzipping
- 与哈希表相比,通过循环访问数组中对象的Javascript优化
- JavaScript:优化自定义对象文字的排序
- 这是javascript优化吗
- JavaScript优化:如何缓存本地变量'初始值更有效
- 对现有对象调用new Object()的Javascript优化
- 为Javascript优化Gruber URL正则表达式
- 使用“new Function()”进行Javascript优化
- 针对Internet Explorer的Javascript优化
- Javascript优化:V8和IE的问题
- Javascript优化:什么工具可以压缩顺序字符串连接?
- JavaScript优化脚本
- 使用Javascript优化性能的框架
- Javascript新手:iOS, Android或桌面Javascript优化
- JavaScript优化嵌套循环
- JavaScript优化:全局缓存数学函数
- 用Javascript优化数组中的自定义对象属性