优化jQuery代码
最好说明以下内容:优化jQuery代码,jquery,Jquery,最好说明以下内容: var active = '-active'; if ($j('body').hasClass('faqs')) { $j('.faqs-support').toggleClass('faqs-support' + active); } if ($j('body').hasClass('cameras')) { $j('.camera-support').toggleClass('camera-support' + active); } if ($j('body').
var active = '-active';
if ($j('body').hasClass('faqs')) { $j('.faqs-support').toggleClass('faqs-support' + active); }
if ($j('body').hasClass('cameras')) { $j('.camera-support').toggleClass('camera-support' + active); }
if ($j('body').hasClass('manuals')) { $j('.manuals-support').toggleClass('manuals-support' + active); }
if ($j('body').hasClass('downloads')) { $j('.downloads-support').toggleClass('downloads-support' + active); }
是关于我会怎么写的。不是更短或更高效,而是更清晰
是关于我会怎么写的。没有更短或更高效,但更清晰。如何:
$j.each(['faqs', 'cameras', 'manuals', 'downloads'], function(i, e){
if ($j('body').hasClass(e)) {
$j('.'+e+'-support').toggleClass(e+'-support-active');
}
});
那么:
$j.each(['faqs', 'cameras', 'manuals', 'downloads'], function(i, e){
if ($j('body').hasClass(e)) {
$j('.'+e+'-support').toggleClass(e+'-support-active');
}
});
如果这是正文中唯一的类,只需获取完整的类名,并将其用于DOM选择和.toggleClass()
:
您只需要做一个更改,即将'.camera support'
更改为'.camera support'
。(添加“s”)如果这是正文中唯一的类,只需获取完整的类名,并将其用于DOM选择和.toggleClass()
:
您只需要做一个更改,即将
'.camera support'
更改为'.camera support'
。(添加“s”)如果主体只能有其中一个类,则可以执行以下操作:
var cls = $j('body').attr('class');
if(cls)
$j('.'+cls+'-support').toggleClass(cls+'-support-active');
如果主体只能有其中一个类,则可以执行以下操作:
var cls = $j('body').attr('class');
if(cls)
$j('.'+cls+'-support').toggleClass(cls+'-support-active');
请将其标记为代码以便可读请将其标记为代码以便其可读正是我正要编写的内容正是我正要编写的内容您应该缓存
$j('body')
,这样它就不必多次按标记名查找元素,只会得到相同的结果并将其丢弃。@minitech:Yes,这是一个可能的进一步改进,取决于您是想要简单还是高效。现在,它只是以与原始代码相同的方式执行。您应该缓存$j('body')
,这样它就不必多次按标记名查找元素,只会得到相同的结果并将其丢弃。@minitech:是的,这是一个可能的进一步改进,这取决于您想要的是简单性还是效率。现在,它只是以与原始代码相同的方式执行。+1看起来我们在同一条轨道上。:o) 我只需将cls+'-support'+active
更改为cls+'-support active'
+1看起来我们在同一条轨道上:o) 我只需将cls+'-support'+active
更改为cls+'-supportactive'