我正在尝试将功能列表简化为单个功能。基本上我有6个div,每个都有id #slide_,其中下划线是1-6的数字(#slide1,#slide2等)。
我的功能是这样的:
if ($("#slide1").hasClass('active')) {});
每个#slide_ids都有一个if语句。简化这个的最佳方法是什么,所以我有一个函数而不是6个不同的if语句?
答案 0 :(得分:3)
$("[id^='slide']").each(...)
请注意,这将匹配所有元素,其ID以" slide"开头。更好的解决方案是为要定位的元素分配一个类,然后选择该类。
答案 1 :(得分:3)
循环那个傻逼!首先,应用一个类(我使用.slide
作为示例):
var $slides = $('.slide');
或者(如果你不能修改HTML)你可以使用@j08691引用的“starts with”选择器:
var $slides = $('[id^="slide"]');
然后在该集合上应用for
循环:
for(var i = $slides.length; i--;){
if($slides.eq(i).hasClass('active')){
// do your magic
}
}
或者你可以更进一步,如果你正在对同一个对象做某事,只需过滤记录集:
$slides.filter(function(){
return $(this).hasClass('active');
}).applyMethod();
如果要修改幻灯片以外的对象,请使用循环,否则如果要修改幻灯片,请使用过滤器。无论哪种方式,都应该有效。