Эта функция jQuery, а не плагин, будет циклически проходить через любое количество классов, которые были установлены как csv классов в атрибуте data-classes элемента cycler.Два класса действуют как тумблер.Начните с класса, которого нет в списке, и начальное состояние не затронуто.
Выполните цикл с помощью $ (селектор) .cycleClass ().
Я запускаю мой серверный механизм шаблонов на стороне сервера, отсюда {{#objModel}} и {{/ objModel}}если нет.
Работает с любым элементом, который имеет атрибуты class и data- *.Код ниже имеет кнопку цикла для изменения класса кодового блока.Но он мог просто быть на самой кнопке и изменить свой собственный класс.
Я первоначально опубликовал это, чтобы ответить на тему / вопрос toggle class , затем нашел этот цикл.
См. Это в использовании в www.PluginExamples.com .
{{#objModel}}
<style>
#cycler.A code {outline:3px solid red;}
#cycler.B code {outline:3px solid blue;}
#cycler.C code {outline:3px dotted green;}
#cycler.D code {outline:3px dotted red;}
#cycler.E code {outline:3px dashed blue;}
#cycler.F code {outline:3px dashed green;}
</style>
<button onclick="$('#cycler').cycleClass();">Cycle</button>
<div id="cycler" data-classes=",A,B,C,D,E,F">
<code
id="cycleClass"
><div id="cycler" data-classes=",A,B,C,D,E,F,">...</div>
<button onclick="$('#cycler').cycleClass();">Cycle</button>
$( ".cycler" ).cycleClass();
$.fn.cycleClass = function(){
if( !$(this).data("aClasses") ){
var classes = $(this).attr("data-classes").split(",");
$(this).data("aClasses", classes);
$(this).data("classes", classes.join(" "));
$(this).data("class", classes.length);
}
$(this).data("class",($(this).data("class")+1) % $(this).data("aClasses").length);
$(this).removeClass($(this).data("classes"))
.addClass( $(this).data("aClasses")[$(this).data("class")] );
return $(this);
}
</code>
</div>
<script>
(function($){
$.fn.cycleClass = function(){
if( !$(this).data("aClasses") ){
var classes = $(this).attr("data-classes").split(",");
$(this).data("aClasses", classes);
$(this).data("classes", classes.join(" "));
$(this).data("class", classes.length);
}
$(this).data("class",($(this).data("class")+1) % $(this).data("aClasses").length);
$(this).removeClass($(this).data("classes"))
.addClass( $(this).data("aClasses")[$(this).data("class")] );
return $(this);
}
});
</script>
{{/objModel}}
[1]: http://www.pluginexamples.com